{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 286
    },
    "colab_type": "code",
    "id": "lVWHW01yMYGG",
    "outputId": "03913a50-2c37-409e-ca4e-7af61deef82d"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[K    100% |████████████████████████████████| 122kB 7.8MB/s \n",
      "\u001b[K    100% |████████████████████████████████| 1.5MB 15.3MB/s \n",
      "\u001b[K    100% |████████████████████████████████| 184kB 28.6MB/s \n",
      "\u001b[K    100% |████████████████████████████████| 3.6MB 10.8MB/s \n",
      "\u001b[K    100% |████████████████████████████████| 496.4MB 27kB/s \n",
      "\u001b[K    100% |████████████████████████████████| 12.5MB 2.5MB/s \n",
      "\u001b[K    100% |████████████████████████████████| 102kB 24.6MB/s \n",
      "\u001b[K    100% |████████████████████████████████| 61kB 20.7MB/s \n",
      "\u001b[K    100% |████████████████████████████████| 81kB 24.8MB/s \n",
      "\u001b[?25h  Building wheel for bcolz (setup.py) ... \u001b[?25ldone\n",
      "\u001b[?25h  Building wheel for feather-format (setup.py) ... \u001b[?25ldone\n",
      "\u001b[31mtorchvision 0.2.1 has requirement pillow>=4.1.1, but you'll have pillow 4.0.0 which is incompatible.\u001b[0m\n",
      "\u001b[31mmizani 0.5.3 has requirement pandas>=0.23.4, but you'll have pandas 0.22.0 which is incompatible.\u001b[0m\n",
      "\u001b[31mplotnine 0.5.1 has requirement pandas>=0.23.4, but you'll have pandas 0.22.0 which is incompatible.\u001b[0m\n",
      "\u001b[K    100% |████████████████████████████████| 51kB 4.9MB/s \n",
      "\u001b[?25h  Building wheel for torchtext (setup.py) ... \u001b[?25ldone\n",
      "\u001b[?25h"
     ]
    }
   ],
   "source": [
    "!pip install -q fastai==0.7.0\n",
    "!pip install -q torchtext==0.2.3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "ikYktXqCzFlk"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/sklearn/ensemble/weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n",
      "  from numpy.core.umath_tests import inner1d\n"
     ]
    }
   ],
   "source": [
    "# %load_ext autoreload\n",
    "# %autoreload 2\n",
    "%matplotlib inline\n",
    "\n",
    "from fastai.imports import *\n",
    "from fastai.structured import *\n",
    "\n",
    "from pandas_summary import DataFrameSummary\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from IPython.display import display\n",
    "\n",
    "from sklearn import metrics\n",
    "import feather"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "C_kNGB9R0Paq"
   },
   "outputs": [],
   "source": [
    "PATH = Path(\"data/sale/\")\n",
    "os.makedirs(PATH, exist_ok=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Mcu2IxxFNipf"
   },
   "outputs": [],
   "source": [
    "!kaggle competitions download -c competitive-data-science-predict-future-sales -p {PATH}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "uGh_5KcwHSBc",
    "outputId": "017e99ac-0fc9-484b-b25f-d8ddf81b1ed4"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "item_categories.csv  items.csv\tsales_train.csv  shops.csv  test.csv\n"
     ]
    }
   ],
   "source": [
    "!cd {PATH} && ls *.gz | xargs -IX gunzip X\n",
    "!ls {PATH}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "p6hg0VwQPCFH"
   },
   "source": [
    "## Look at Data Quickly"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "6eWXdiqJ-mxn"
   },
   "outputs": [],
   "source": [
    "train = pd.read_csv(PATH/'sales_train.csv', low_memory=False)\n",
    "test = pd.read_csv(PATH/'test.csv', low_memory=False)\n",
    "shops = pd.read_csv(PATH/'shops.csv', low_memory=False)\n",
    "items = pd.read_csv(PATH/'items.csv', low_memory=False)\n",
    "cats = pd.read_csv(PATH/'item_categories.csv', low_memory=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 909
    },
    "colab_type": "code",
    "id": "hh8Q1NuiQWcI",
    "outputId": "e72f128a-af49-4544-a1f8-09c24854023e"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>date_block_num</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_price</th>\n",
       "      <th>item_cnt_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>02.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>59</td>\n",
       "      <td>22154</td>\n",
       "      <td>999.00</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>03.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>25</td>\n",
       "      <td>2552</td>\n",
       "      <td>899.00</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>05.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>25</td>\n",
       "      <td>2552</td>\n",
       "      <td>899.00</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>06.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>25</td>\n",
       "      <td>2554</td>\n",
       "      <td>1709.05</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>15.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>25</td>\n",
       "      <td>2555</td>\n",
       "      <td>1099.00</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         date  date_block_num  shop_id  item_id  item_price  item_cnt_day\n",
       "0  02.01.2013               0       59    22154      999.00           1.0\n",
       "1  03.01.2013               0       25     2552      899.00           1.0\n",
       "2  05.01.2013               0       25     2552      899.00          -1.0\n",
       "3  06.01.2013               0       25     2554     1709.05           1.0\n",
       "4  15.01.2013               0       25     2555     1099.00           1.0"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5037</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>5320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>5233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>5232</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>5268</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   ID  shop_id  item_id\n",
       "0   0        5     5037\n",
       "1   1        5     5320\n",
       "2   2        5     5233\n",
       "3   3        5     5232\n",
       "4   4        5     5268"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>shop_name</th>\n",
       "      <th>shop_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>!Якутск Орджоникидзе, 56 фран</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>!Якутск ТЦ \"Центральный\" фран</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Адыгея ТЦ \"Мега\"</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Балашиха ТРК \"Октябрь-Киномир\"</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Волжский ТЦ \"Волга Молл\"</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                        shop_name  shop_id\n",
       "0   !Якутск Орджоникидзе, 56 фран        0\n",
       "1   !Якутск ТЦ \"Центральный\" фран        1\n",
       "2                Адыгея ТЦ \"Мега\"        2\n",
       "3  Балашиха ТРК \"Октябрь-Киномир\"        3\n",
       "4        Волжский ТЦ \"Волга Молл\"        4"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_name</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_category_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>! ВО ВЛАСТИ НАВАЖДЕНИЯ (ПЛАСТ.)         D</td>\n",
       "      <td>0</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>!ABBYY FineReader 12 Professional Edition Full...</td>\n",
       "      <td>1</td>\n",
       "      <td>76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>***В ЛУЧАХ СЛАВЫ   (UNV)                    D</td>\n",
       "      <td>2</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>***ГОЛУБАЯ ВОЛНА  (Univ)                      D</td>\n",
       "      <td>3</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>***КОРОБКА (СТЕКЛО)                       D</td>\n",
       "      <td>4</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                           item_name  item_id  \\\n",
       "0          ! ВО ВЛАСТИ НАВАЖДЕНИЯ (ПЛАСТ.)         D        0   \n",
       "1  !ABBYY FineReader 12 Professional Edition Full...        1   \n",
       "2      ***В ЛУЧАХ СЛАВЫ   (UNV)                    D        2   \n",
       "3    ***ГОЛУБАЯ ВОЛНА  (Univ)                      D        3   \n",
       "4        ***КОРОБКА (СТЕКЛО)                       D        4   \n",
       "\n",
       "   item_category_id  \n",
       "0                40  \n",
       "1                76  \n",
       "2                40  \n",
       "3                40  \n",
       "4                40  "
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_category_name</th>\n",
       "      <th>item_category_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>PC - Гарнитуры/Наушники</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Аксессуары - PS2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Аксессуары - PS3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Аксессуары - PS4</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Аксессуары - PSP</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        item_category_name  item_category_id\n",
       "0  PC - Гарнитуры/Наушники                 0\n",
       "1         Аксессуары - PS2                 1\n",
       "2         Аксессуары - PS3                 2\n",
       "3         Аксессуары - PS4                 3\n",
       "4         Аксессуары - PSP                 4"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(train.head())\n",
    "display(test.head())\n",
    "display(shops.head())\n",
    "display(items.head())\n",
    "display(cats.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 296
    },
    "colab_type": "code",
    "id": "2qsMaNHjXzF7",
    "outputId": "549a1b27-1b7e-4897-be62-da19335fa0b9"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date_block_num</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>shop_name</th>\n",
       "      <th>item_name</th>\n",
       "      <th>item_category_name</th>\n",
       "      <th>item_cnt_month</th>\n",
       "      <th>item_price_month</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>59</td>\n",
       "      <td>22154</td>\n",
       "      <td>Ярославль ТЦ \"Альтаир\"</td>\n",
       "      <td>ЯВЛЕНИЕ 2012 (BD)</td>\n",
       "      <td>Кино - Blu-Ray</td>\n",
       "      <td>1.0</td>\n",
       "      <td>999.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>14050</td>\n",
       "      <td>Воронеж ТРЦ Сити-Парк \"Град\"</td>\n",
       "      <td>ЛЮБОВЬ</td>\n",
       "      <td>Кино - DVD</td>\n",
       "      <td>1.0</td>\n",
       "      <td>349.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>52</td>\n",
       "      <td>20005</td>\n",
       "      <td>Уфа ТК \"Центральный\"</td>\n",
       "      <td>Тренинг развития памяти (mp3-CD) (Jewel)</td>\n",
       "      <td>Книги - Аудиокниги</td>\n",
       "      <td>1.0</td>\n",
       "      <td>249.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>13</td>\n",
       "      <td>14050</td>\n",
       "      <td>Казань ТЦ \"Бехетле\"</td>\n",
       "      <td>ЛЮБОВЬ</td>\n",
       "      <td>Кино - DVD</td>\n",
       "      <td>2.0</td>\n",
       "      <td>224.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>31</td>\n",
       "      <td>14050</td>\n",
       "      <td>Москва ТЦ \"Семеновский\"</td>\n",
       "      <td>ЛЮБОВЬ</td>\n",
       "      <td>Кино - DVD</td>\n",
       "      <td>7.0</td>\n",
       "      <td>334.571429</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   date_block_num  shop_id  item_id                     shop_name  \\\n",
       "0               0       59    22154        Ярославль ТЦ \"Альтаир\"   \n",
       "1               0        8    14050  Воронеж ТРЦ Сити-Парк \"Град\"   \n",
       "2               0       52    20005          Уфа ТК \"Центральный\"   \n",
       "3               0       13    14050           Казань ТЦ \"Бехетле\"   \n",
       "4               0       31    14050       Москва ТЦ \"Семеновский\"   \n",
       "\n",
       "                                  item_name  item_category_name  \\\n",
       "0                         ЯВЛЕНИЕ 2012 (BD)      Кино - Blu-Ray   \n",
       "1                                    ЛЮБОВЬ          Кино - DVD   \n",
       "2  Тренинг развития памяти (mp3-CD) (Jewel)  Книги - Аудиокниги   \n",
       "3                                    ЛЮБОВЬ          Кино - DVD   \n",
       "4                                    ЛЮБОВЬ          Кино - DVD   \n",
       "\n",
       "   item_cnt_month  item_price_month  \n",
       "0             1.0        999.000000  \n",
       "1             1.0        349.000000  \n",
       "2             1.0        249.000000  \n",
       "3             2.0        224.000000  \n",
       "4             7.0        334.571429  "
      ]
     },
     "execution_count": 5,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train = train.merge(shops, on='shop_id')\n",
    "train = train.merge(items, on='item_id')\n",
    "train = train.merge(cats, on='item_category_id')\n",
    "train.drop('item_category_id', 1, inplace=True)\n",
    "\n",
    "g = train.groupby(['date_block_num','shop_id','item_id']).agg({'item_cnt_day': ['sum']})\n",
    "g.columns = ['item_cnt_month']\n",
    "g.item_cnt_month = g.item_cnt_month.clip(0, 20)\n",
    "train = train.merge(g.reset_index(), how='left', on=['date_block_num','shop_id','item_id'])\n",
    "\n",
    "g = train.groupby(['date_block_num','shop_id','item_id']).agg({'item_price': ['mean']})\n",
    "g.columns = ['item_price_month']\n",
    "train = train.merge(g.reset_index(), how='left', on=['date_block_num','shop_id','item_id'])\n",
    "\n",
    "train.drop(['date', 'item_price', 'item_cnt_day'], 1, inplace=True)\n",
    "train.drop_duplicates(inplace=True)\n",
    "train = train.sort_values('date_block_num').reset_index(drop=True)\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "O-c0US_KYscI",
    "outputId": "766799a7-c8a7-4946-a27e-a7b205767f18"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{}"
      ]
     },
     "execution_count": 6,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_cats(train)\n",
    "df, y, nas = proc_df(train, 'item_cnt_month')\n",
    "nas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 121
    },
    "colab_type": "code",
    "id": "zxvThP0r-wrw",
    "outputId": "1540f6f5-dfa3-480c-dc74-9afa93e47bdf"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.6/dist-packages/sklearn/ensemble/forest.py:246: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n",
      "  \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 2min 45s, sys: 142 ms, total: 2min 45s\n",
      "Wall time: 1min 26s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9243853945527375"
      ]
     },
     "execution_count": 42,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = RandomForestRegressor(n_jobs=-1)\n",
    "%time m.fit(df, y)\n",
    "m.score(df, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "ULM25nzfXzJH",
    "outputId": "e1f04b0f-83ef-4cc0-d595-33ee70667b04"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1389124, 220000)"
      ]
     },
     "execution_count": 43,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def split_by_len(x, n): return x[:n].copy(), x[n:].copy()\n",
    "\n",
    "n = df.shape[0] - 220000\n",
    "trn_x, val_x = split_by_len(df, n)\n",
    "trn_y, val_y = split_by_len(y, n)\n",
    "trn_df, val_df = split_by_len(train, n)\n",
    "len(trn_x), len(val_x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 84
    },
    "colab_type": "code",
    "id": "1V_BrA3ECsHj",
    "outputId": "20915cfd-4b5a-474a-a9a8-6d70f56f73a4"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.9238985285348011,\n",
       " -0.02553727954247975,\n",
       " 0.47282664895215065,\n",
       " 2.334026797384531]"
      ]
     },
     "execution_count": 45,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def rmse(x, t): return np.sqrt(np.mean((x - t) ** 2))\n",
    "\n",
    "def show_results(m):\n",
    "  res = [m.score(trn_x, trn_y), m.score(val_x, val_y)]\n",
    "  if hasattr(m, 'oob_score_'): res.append(m.oob_score_)\n",
    "  res.append(rmse(m.predict(val_x), val_y))\n",
    "  return res\n",
    "\n",
    "m = RandomForestRegressor(n_jobs=-1, oob_score=True)\n",
    "%time m.fit(trn_x, trn_y)\n",
    "show_results(m)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "GfgZ2kluHZWx"
   },
   "source": [
    "## EDA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "DTEf8D6WXzPF"
   },
   "outputs": [],
   "source": [
    "train = pd.read_csv(PATH/'sales_train.csv', low_memory=False)\n",
    "test = pd.read_csv(PATH/'test.csv', low_memory=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 550
    },
    "colab_type": "code",
    "id": "m8cNI6j-ed85",
    "outputId": "130ec505-93cd-47da-f18c-08f2f0410f54"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'.  Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f7000112860>"
      ]
     },
     "execution_count": 4,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.plot('item_price', 'item_cnt_day', 'scatter', figsize=(8, 8))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 197
    },
    "colab_type": "code",
    "id": "dxwjwj9KeeAn",
    "outputId": "7dad8b22-8fca-4c00-e769-6bd8d8601da9"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>date_block_num</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_price</th>\n",
       "      <th>item_cnt_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1163158</th>\n",
       "      <td>13.12.2013</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>6066</td>\n",
       "      <td>307980.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               date  date_block_num  shop_id  item_id  item_price  \\\n",
       "1163158  13.12.2013              11       12     6066    307980.0   \n",
       "\n",
       "         item_cnt_day  \n",
       "1163158           1.0  "
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>date_block_num</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_price</th>\n",
       "      <th>item_cnt_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2909818</th>\n",
       "      <td>28.10.2015</td>\n",
       "      <td>33</td>\n",
       "      <td>12</td>\n",
       "      <td>11373</td>\n",
       "      <td>0.908714</td>\n",
       "      <td>2169.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               date  date_block_num  shop_id  item_id  item_price  \\\n",
       "2909818  28.10.2015              33       12    11373    0.908714   \n",
       "\n",
       "         item_cnt_day  \n",
       "2909818        2169.0  "
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>date_block_num</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_price</th>\n",
       "      <th>item_cnt_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2326930</th>\n",
       "      <td>15.01.2015</td>\n",
       "      <td>24</td>\n",
       "      <td>12</td>\n",
       "      <td>20949</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1000.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               date  date_block_num  shop_id  item_id  item_price  \\\n",
       "2326930  15.01.2015              24       12    20949         4.0   \n",
       "\n",
       "         item_cnt_day  \n",
       "2326930        1000.0  "
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(train[train.item_price > 300000])\n",
    "display(train[train.item_cnt_day > 2000])\n",
    "display(train[train.item_cnt_day == 1000])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "fbRmLBpAeeGR",
    "outputId": "81e934ed-9f58-4e76-c6c7-a9d1460cb7bd"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(False, True, True)"
      ]
     },
     "execution_count": 8,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "6066 in test.item_id.values, 11373 in test.item_id.values, 20949 in test.item_id.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 77
    },
    "colab_type": "code",
    "id": "AP-Tv3ypeeDo",
    "outputId": "488f353d-ccdd-40d5-db34-794447a77bbf"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>date_block_num</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_price</th>\n",
       "      <th>item_cnt_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1163158</th>\n",
       "      <td>13.12.2013</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>6066</td>\n",
       "      <td>307980.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               date  date_block_num  shop_id  item_id  item_price  \\\n",
       "1163158  13.12.2013              11       12     6066    307980.0   \n",
       "\n",
       "         item_cnt_day  \n",
       "1163158           1.0  "
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(train[train.item_id == 6066])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 284
    },
    "colab_type": "code",
    "id": "DNexfydqgw6j",
    "outputId": "c2f255cc-f07c-4cdd-8199-90523f570988"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date_block_num</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_price</th>\n",
       "      <th>item_cnt_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>464.000000</td>\n",
       "      <td>464.0</td>\n",
       "      <td>464.0</td>\n",
       "      <td>464.000000</td>\n",
       "      <td>464.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>19.948276</td>\n",
       "      <td>12.0</td>\n",
       "      <td>11373.0</td>\n",
       "      <td>367.548909</td>\n",
       "      <td>14.144397</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>8.817658</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>296.953061</td>\n",
       "      <td>104.604937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>12.0</td>\n",
       "      <td>11373.0</td>\n",
       "      <td>0.908714</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>13.000000</td>\n",
       "      <td>12.0</td>\n",
       "      <td>11373.0</td>\n",
       "      <td>184.616848</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>21.000000</td>\n",
       "      <td>12.0</td>\n",
       "      <td>11373.0</td>\n",
       "      <td>281.625000</td>\n",
       "      <td>4.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>28.000000</td>\n",
       "      <td>12.0</td>\n",
       "      <td>11373.0</td>\n",
       "      <td>443.083333</td>\n",
       "      <td>8.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>33.000000</td>\n",
       "      <td>12.0</td>\n",
       "      <td>11373.0</td>\n",
       "      <td>2137.000000</td>\n",
       "      <td>2169.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       date_block_num  shop_id  item_id   item_price  item_cnt_day\n",
       "count      464.000000    464.0    464.0   464.000000    464.000000\n",
       "mean        19.948276     12.0  11373.0   367.548909     14.144397\n",
       "std          8.817658      0.0      0.0   296.953061    104.604937\n",
       "min          0.000000     12.0  11373.0     0.908714      1.000000\n",
       "25%         13.000000     12.0  11373.0   184.616848      2.000000\n",
       "50%         21.000000     12.0  11373.0   281.625000      4.000000\n",
       "75%         28.000000     12.0  11373.0   443.083333      8.000000\n",
       "max         33.000000     12.0  11373.0  2137.000000   2169.000000"
      ]
     },
     "execution_count": 10,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[train.item_id == 11373].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 284
    },
    "colab_type": "code",
    "id": "MLjkwjeLeeJB",
    "outputId": "50caf184-3d62-47b4-95c2-ce6c48ffebaa"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date_block_num</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_price</th>\n",
       "      <th>item_cnt_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>31340.000000</td>\n",
       "      <td>31340.000000</td>\n",
       "      <td>31340.0</td>\n",
       "      <td>31340.000000</td>\n",
       "      <td>31340.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>17.683344</td>\n",
       "      <td>31.632833</td>\n",
       "      <td>20949.0</td>\n",
       "      <td>4.914856</td>\n",
       "      <td>5.987301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>8.255712</td>\n",
       "      <td>16.907710</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.398042</td>\n",
       "      <td>11.497655</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20949.0</td>\n",
       "      <td>1.830000</td>\n",
       "      <td>-16.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>11.000000</td>\n",
       "      <td>18.000000</td>\n",
       "      <td>20949.0</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>17.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>20949.0</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>24.000000</td>\n",
       "      <td>46.000000</td>\n",
       "      <td>20949.0</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>7.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>33.000000</td>\n",
       "      <td>59.000000</td>\n",
       "      <td>20949.0</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1000.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       date_block_num       shop_id  item_id    item_price  item_cnt_day\n",
       "count    31340.000000  31340.000000  31340.0  31340.000000  31340.000000\n",
       "mean        17.683344     31.632833  20949.0      4.914856      5.987301\n",
       "std          8.255712     16.907710      0.0      0.398042     11.497655\n",
       "min          3.000000      2.000000  20949.0      1.830000    -16.000000\n",
       "25%         11.000000     18.000000  20949.0      5.000000      2.000000\n",
       "50%         17.000000     30.000000  20949.0      5.000000      3.000000\n",
       "75%         24.000000     46.000000  20949.0      5.000000      7.000000\n",
       "max         33.000000     59.000000  20949.0      5.000000   1000.000000"
      ]
     },
     "execution_count": 11,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[train.item_id == 20949].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "GdHv9LHAeeMf"
   },
   "outputs": [],
   "source": [
    "train = train[(train.item_price < 100000) & (train.item_cnt_day <= 1000)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 168
    },
    "colab_type": "code",
    "id": "EmIz9iqwJoVp",
    "outputId": "b1604b4c-6c9a-4407-f106-6c3850974500"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    2.935847e+06\n",
       "mean     8.907489e+02\n",
       "std      1.720490e+03\n",
       "min     -1.000000e+00\n",
       "25%      2.490000e+02\n",
       "50%      3.990000e+02\n",
       "75%      9.990000e+02\n",
       "max      5.920000e+04\n",
       "Name: item_price, dtype: float64"
      ]
     },
     "execution_count": 13,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.item_price.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 77
    },
    "colab_type": "code",
    "id": "cRKIiFeGJvkH",
    "outputId": "f72a1ed3-ce9e-4c45-b51a-e1ba697f6574"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>date_block_num</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_price</th>\n",
       "      <th>item_cnt_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>484683</th>\n",
       "      <td>15.05.2013</td>\n",
       "      <td>4</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              date  date_block_num  shop_id  item_id  item_price  item_cnt_day\n",
       "484683  15.05.2013               4       32     2973        -1.0           1.0"
      ]
     },
     "execution_count": 14,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[train.item_price <= 0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 432
    },
    "colab_type": "code",
    "id": "c715bVScKECb",
    "outputId": "122a863f-ac57-4b99-ad8c-602b042b9572"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>date_block_num</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_price</th>\n",
       "      <th>item_cnt_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>67427</th>\n",
       "      <td>29.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>2499.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67428</th>\n",
       "      <td>25.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>2499.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67429</th>\n",
       "      <td>22.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>2499.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67430</th>\n",
       "      <td>21.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>2499.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67431</th>\n",
       "      <td>18.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>2499.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67432</th>\n",
       "      <td>17.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>2499.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67433</th>\n",
       "      <td>15.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>2499.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>187844</th>\n",
       "      <td>05.02.2013</td>\n",
       "      <td>1</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>2499.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>187845</th>\n",
       "      <td>14.02.2013</td>\n",
       "      <td>1</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>2499.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>484682</th>\n",
       "      <td>23.05.2013</td>\n",
       "      <td>4</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>1249.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>484683</th>\n",
       "      <td>15.05.2013</td>\n",
       "      <td>4</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>484684</th>\n",
       "      <td>06.05.2013</td>\n",
       "      <td>4</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>2499.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>555026</th>\n",
       "      <td>05.06.2013</td>\n",
       "      <td>5</td>\n",
       "      <td>32</td>\n",
       "      <td>2973</td>\n",
       "      <td>1249.5</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              date  date_block_num  shop_id  item_id  item_price  item_cnt_day\n",
       "67427   29.01.2013               0       32     2973      2499.0           1.0\n",
       "67428   25.01.2013               0       32     2973      2499.0           1.0\n",
       "67429   22.01.2013               0       32     2973      2499.0           1.0\n",
       "67430   21.01.2013               0       32     2973      2499.0           1.0\n",
       "67431   18.01.2013               0       32     2973      2499.0           1.0\n",
       "67432   17.01.2013               0       32     2973      2499.0           1.0\n",
       "67433   15.01.2013               0       32     2973      2499.0           3.0\n",
       "187844  05.02.2013               1       32     2973      2499.0           1.0\n",
       "187845  14.02.2013               1       32     2973      2499.0           1.0\n",
       "484682  23.05.2013               4       32     2973      1249.0           1.0\n",
       "484683  15.05.2013               4       32     2973        -1.0           1.0\n",
       "484684  06.05.2013               4       32     2973      2499.0           1.0\n",
       "555026  05.06.2013               5       32     2973      1249.5           1.0"
      ]
     },
     "execution_count": 15,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[(train.item_id == 2973) & (train.shop_id == 32)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "XmK9QU3pJ64p"
   },
   "outputs": [],
   "source": [
    "train.loc[train.item_price <= 0, 'item_price'] = 2499.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 296
    },
    "colab_type": "code",
    "id": "mblJ8g_ss3oe",
    "outputId": "859d874a-13db-4328-a262-dc8eb349e6ae"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f6fef8635c0>"
      ]
     },
     "execution_count": 17,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nUf8fEeB1KwnIElAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "g = train.groupby(['date_block_num', 'item_id']).agg({'item_cnt_day': ['sum']})\n",
    "g.columns = ['cnt_month']\n",
    "g.groupby(['date_block_num']).cnt_month.sum().plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 297
    },
    "colab_type": "code",
    "id": "IoeLAaW5tH7q",
    "outputId": "c488d27a-73e8-4ffb-cdc1-6546f856bd56"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f6fecb09780>"
      ]
     },
     "execution_count": 19,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "g.loc[32].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 296
    },
    "colab_type": "code",
    "id": "_jvIeIK7t3HT",
    "outputId": "94550de8-ce05-4082-f577-f5e72c039a46"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f6fecaf7cf8>"
      ]
     },
     "execution_count": 20,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "g.loc[33].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "Yz9M9_bYrH9v",
    "outputId": "5d744e42-22dd-474b-a068-fd67de9c1558"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(14620, 0.6704576722003118)"
      ]
     },
     "execution_count": 21,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "item_last = np.unique(g.loc[31:].reset_index().item_id.values)\n",
    "item_all = np.unique(g.reset_index().item_id.values)\n",
    "n_item_outdated = len(list(set(item_all) - set(item_last)))\n",
    "n_item_outdated, n_item_outdated / len(item_all)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 296
    },
    "colab_type": "code",
    "id": "C7S3hi9erIA7",
    "outputId": "c4856718-1a27-4526-e575-5327208b7a08"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f6feca50f28>"
      ]
     },
     "execution_count": 22,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nUf8fEeB1KwnIElAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "g = train.groupby(['date_block_num', 'shop_id']).agg({'item_cnt_day': ['sum']})\n",
    "g.columns = ['cnt_month']\n",
    "g.groupby(['date_block_num']).cnt_month.sum().plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 296
    },
    "colab_type": "code",
    "id": "Zw8SIUReymZM",
    "outputId": "367a2545-79a4-4407-921b-c8659e13cea6"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f6feca1c898>"
      ]
     },
     "execution_count": 23,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "g.loc[32].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 296
    },
    "colab_type": "code",
    "id": "pn7pAgJIymcP",
    "outputId": "8770adfc-5513-4ac1-9652-e8eed3293005"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f6fec9a0630>"
      ]
     },
     "execution_count": 24,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEGCAYAAABrQF4qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsvXmcZFV5//++tXVXdVfv6/TMwKwH\nZoYdBAVkFNS4oFHEjaCikcSf8RdJ8v1GjcEloIlL4suIUaMRhcSoRAO4AI6iArIMwyLMcmbfe9+7\nq7rW+/3j3ltd3V1VXXvVrT7v12teU33rVtU53VWfeu7nPOd5NF3XUSgUCkXt4qj0ABQKhUJRWpTQ\nKxQKRY2jhF6hUChqHCX0CoVCUeMooVcoFIoax1XpAaRieHh6QSpQa6uP8fFApYZTMmpxXmpO9qEW\n51WLc4Ls59XZ6ddSHbdFRO9yOSs9hJJQi/NSc7IPtTivWpwTFD4vWwi9QqFQKPJHCb1CoVDUOEro\nFQqFosZRQq9QKBQ1jhJ6hUKhqHGU0CsUCkWNo4ReoVAoahwl9Arboes69z56hGMD05UeikJhC5TQ\nK2zH4HiQex89wsPPnqz0UBQKW6CEXmE7wpEYAKFIvMIjUdQqzz33DOPjY2V7vYcf3gFAf/9p3v/+\nG4v+/EroFbYjEo0v+F+hKDY/+9l9ZRX6u+/+bkmfvyqLmikUmbAEPhyNVWwM0Vgcp0ND01LWkFJk\nwQ9/fZCd+4aK+pwvv3A11162Nu390WiU2277JIOD/Xg8dVx44cX0959mYmKc48eP8a533Uh3dw+P\nPPIbjhw5zG23fZ6enp4lz/Pzn9/Pc889w8TEBEeOHObmmz/Ijh0PcvToEW699Ta2bt3GD3/4fX71\nq4cAuPLKq/iTP3kvt9/+KTo6OpFyL4ODA9x6623s2vUUBw/u5+Mf/z98+MO3oOtxvvjFz7Fnz26E\nOJu//du/K/j3oiJ6he2IxAyhj1Yoog+Govz1HY9x76NHKvL6ivz5xS9+Snt7O//2b//Btdf+MU1N\nzRw6dJDbb/8Cn/vcl7jnnh9yySWXsXHjZj7+8VtTirzFiRPH+ad/+mduvPG93H33nXz2s1/kxhvf\ny44dD3L69Cl+8Yv7ueOOf+eOO/6dX//6l5w6ZawphcNh/vmfv8r117+DBx74Ge9617tpbGzks5/9\nQuJ5b7rpA3zrW9/jiSceY3q68KSDrCJ6IcQNwP8FosCtwB+AuwAn0A/cKKUMmed9BIgD35RSflsI\n4QbuBM4AYsBNUsrDBY9csWIJRypr3ZwYmmE6EOGoyvopiLe9ciNve+XGoj5nZ6ef4eH0fxcp93Hx\nxZcAcM01r+HnP7+fbdvOxel00tnZxezsTNavddZZW9A0jfb2DjZs2ITT6aS1tZ3Z2ec5cECydes5\nuFyGxJ5zznkcPLgfgPPOu8Acazd79uxe8rx9fWtob+8AoK2tPacxpWPZiF4I0Q58ErgCeAPwJuAz\nwB1SyiuBg8D7hBANGF8C1wDbgVuEEG3Au4AJKeUVwO3A5woetWJFE4kZlk24QkI/MGbUBZ+aDVfk\n9RX543Q6iMf1RcfmSwDrur74IRmey5nytvEc2oLnikQiaJojq9dLvj/XMaUjG+vmGmCHlHJaStkv\npbwZQ8jvM++/3zznUmCnlHJSShkEHgMuB64GfmKeu8M8plDkTaUXYwdGDaGfDkQq8vqK/DnrrC08\n88xOAB577BFGRoZTnudwOIjF8l8D2rxZ8OKLLxCNRolGo+zZs5vNm0Xa8xd/+RSbbKybMwGfEOI+\noBX4FNAgpQyZ9w8BvUAPkPxbW3JcShkXQuhCCI+UMm041NrqW1Jov7PTn818bEctzqvUc6r3egCI\n6XrZfn/JrzM6Y7z1p4MR2//97D7+VGSa0zvecR2f+MSz3HLLB3G5XFx66aVEox46O/3MzjpwOh10\ndvq5/PKX8slPfoyvfe1rbNq0acnz+P31+HzG45qbvdTXuxfcPvdcwQ03vJNbbvkguq7zzne+nXPO\n2Ux9vZvmZu+Sx23duoUPfvAmvvzlL+NyORJzcLkctLU1LDuv5dCWuywQQnwUIwp/M4bP/jDglVJ2\nmvdvBL4HfBW4REp5i3n8NuA48Fbg/0gpnzePnwTWZxL6xa0El/Pd7Eotzqscc3roqeP8968P0uRz\n8+X//8qSvhYsndPHvvE4g+NBAP7tr66izmPPrkbq/Wcfsp1XulaC2UT0g8DvpZRR4JAQYhqICiG8\npkXTB5w2/yUvUfcBTyQdf95cmNUyibxCsRxW1k0lPPpINM7wxFzi56lAmE6Pt+zjUJSHL37xHzl6\ndGnuyJe+9BXq6uorMKL8yEboHwLuFEL8E4Z10wg8CFwH3G3+/wDwJPAtIUQLRnbO5RgZOE3A9eZj\nrsW4IlAo8qaSWTdDE0HiSVfB04EInS1K6GuVv/mbj1Z6CEVh2cVYKeUp4B6M6PwXwIcxsnDeI4R4\nBGgDvmtG9x/FEPQdwKellJPADwCnEOJR4EPAx0oxEcXKwYroY3G95ItYi7EWYv0+NwDTAXVxqqh+\nssqjl1J+A/jGosOvSnHePRhfCsnHYsBN+Q5QoVhMciQficbL6pEPjM0CsHl1C7v2DzOlhF5hA9TO\nWIXtSBb6cpdB6Dcj+k1rWgCYUSmWChughF5hOxZH9OVkYCyA06GxvrcJQEX0ClughF5hOyyPfvHt\nUqPrOv2jAbpavbQ0Grn8atOUwg4ooVfYjuRiZpEy1qSfmg0TDEXpbW/A71NCr7APSugVtiPZly9n\nRG/VuOlt91HnceJxOZR1o7AFSugVtmPBYmykfIux1kJsT5sPAL/Pw4wSeoUNUEKvsB0LFmPLGNEn\nhL7dEno3U4FIUaoLKhSlRAm9wnYsWIwto0efsG7MiL6pwUMkGidUxqsKhSIflNArbEflIvpZmho8\n+OqNXbF+r/H/lFqQVVQ5SugVtmOhR18eoQ9HYoxOziWieQB/g5V5o3x6RXWjhF5hOyoR0Q+NB9Ex\nMm4s5uvdqIheUd0ooVfYjgVCXyZ/vH9sYcYNgN9sgDKtWgoqqhwl9ArbUYmIvn/UKGbW096QONbU\nYEb0QRXRK6obJfQKWxGLx4nrOk6H0UinXB598mYpC2t3rGoSrqh2lNArbIUVzXvrjArb5YvoA7ic\nDtqb5rsKKY9eYReU0CtshSX0vnrXgp9Lia7rDIwF6Gnz4nDMt+Scr3ejInpFdaOEXmErLGFvSAh9\n6Rdjx6bmCIVjC/x5gDq3kzq3U0X0iqpHCb3CViQi+rryRfQnB2eAhRk3Fn6fm+mgiugV1Y0SeoWt\nmLduDH88XA6hH5oGFi7EWvh9bqZmVb0bRXWjhF5hK6zF14YyevQnh42IPrXQe4jG4syFVb0bRfWi\nhF5hKxZH9GUR+iFD6LtbU0f0oBZkFdWNEnqFrbCEvc7jxKFpZRP6Vn9dIqUzmSbVaUphA5TQK2yF\nJexupwO327Gg21QpCIVjjEwEUy7EQtKmKRXRK6oYJfQKW2F59G6XA7fTUfKI3toR25PCnwe1aUph\nD5TQK2yF1TrQ7XLgcZde6PvHjBo3vctE9MqjV1QzS03HRQghtgM/Anabh14APg/cBTiBfuBGKWVI\nCHED8BEgDnxTSvltIYQbuBM4A4gBN0kpDxd5HooVwuKIvtTZLgOjVo2bhpT3q4heYQeyjeh/K6Xc\nbv77MPAZ4A4p5ZXAQeB9QogG4FbgGmA7cIsQog14FzAhpbwCuB34XLEnoVg5WBG8x+XA7XKWPI8+\nVTGzZJpURK+wAflaN9uB+8zb92OI+6XATinlpJQyCDwGXA5cDfzEPHeHeUyhyItoNCmid5XBuhkN\nUOdx0uKvS3m/FdGrdoKKamZZ68ZkixDiPqAN+DTQIKUMmfcNAb1ADzCc9Jglx6WUcSGELoTwSCnT\nhkCtrT5cLueCY52d/iyHai9qcV6lnJO7zhDWjvZGfF430Vicjo5GNE1b5pG5E4/rDI4HWd3VSHdX\nU9rzvHVOguGYLf+WdhzzctTinKCweWUj9AcwxP2HwHrg4UWPS/cJy/V4gvHxwIKfOzv9DA9PLztQ\nu1GL8yr1nCanggAEZkJoZtmB0/2TeNzOTA/Li5HJIOFIjNVdjRnn1FDvZnxqznZ/S/X+sw/Zzivd\nl8Gy1o2U8pSU8gdSSl1KeQgYAFqFEF7zlD7gtPmvJ+mhS46bC7NapmheochEZJF1A6WrSW8txK7u\nbMx4XlODh+lAWNW7UVQtywq9EOIGIcTfmLd7gG7gO8B15inXAQ8ATwKXCCFahBCNGF78I8BDwPXm\nuddiXBEoFHlhLb66koS+VF2mrD6xq7syXzL7vW6iMV3Vu1FULdksxt4HXCWEeAS4F/gg8HfAe8xj\nbcB3zQXYjwIPYiy6flpKOQn8AHAKIR4FPgR8rPjTUKwUrPrzZY3ouzNH9Gp3rKLaWdajl1JOY0Ti\ni3lVinPvAe5ZdCwG3JTvABWKZJLTKz3mgn0kUppI2moI3tvRwPRkMO15/ob5XPru1pIMRaEoCLUz\nVmEryurRjwVob6qn3pM5HvJ7zVx61SRcUaUooVfYisTOWGdpPfpgKMrETDjtRqlkmqyIPqhy6RXV\niRJ6ha2IpliMLUVEnyhmlqbGTTIJj15F9IoqRQm9wlZEonFcTg2HpiV59MUX+oQ/n01Er2rSK6oc\nJfQKWxGOxhORfFki+jTFzJJJFDZTTcIVVYoSeoWtiETjuM1IPiH0JWg+0j+ai3VjCr2ybhRVihJ6\nha2IROO4nQsj+lJUsBwYDVDvcdLS6Fn2XLfLSb3HqawbRdWihF5hKyKxJOvGaUX0xRV6o5hZgN52\nX9bF0vw+t9owpahalNArbEUkyaP3uEsj9COTQaIxPSvbxqLJ52E6EFH1bhRViRJ6ha1IFvpSRfQJ\nfz6LhVgLv89DLK4TDEWLOhaFohgooVfYhriuE40lefRmaeJwkRdjE12lcojoG2u0peDpkVk+9o3H\nOTk0U+mhKApACb3CNiR3l4JyRPS5WTdQe0K//+QEg+NB9h4br/RQFAWghF5hG5Ibg0PpPPqB0Vk0\nDbpbvcufbDLfUrC2FmTDZunlWpvXSkMJvcI2RMoU0Q+MBehs9iby9bOhVpuEh8zKoLU2r5WGEnqF\nbVgi9AmPvnhCPxOMMBWI5GTbQO02CQ+Z5SWmZmtrXisNJfQK2zAv9ObOWDOijxZR6HMpZpaMv0Yj\n+rCK6GsCJfQK25AQ+iU7Y4uXdWN1lcqmmFky/hrNurGsG+XR2xsl9ArbsNi6cTk1NIrr0fePGVUr\nVURvkBB6Zd3YGiX0CtuQ3C8WQNM03C5HUYV+PqLPfrOUNSZvXe3Vu7GauoQiMUKq+bltUUKvsA1W\neqXHNf+2LbrQjwVoqHclrJhc8Hs9NWdxhJL68dba1cpKQgm9wjZEkrpLWRRT6KOxOEPjQXrasi9m\nloy/wc1MjdW7SRb6WssoWkkooVfYhsUePYDH5SzaYuzwRJBYXM85tdLC7zXq3QRqqN7NQqFXEb1d\nUUKvsA2Ls26guBF9osZNjv68RaJJeA1Fvsm+vGqsYl+U0Ctsw+ISCNbtogl9Dl2lUlGLTcLDKqKv\nCVzZnCSE8AIvAv8A/Aq4C3AC/cCNUsqQEOIG4CNAHPimlPLbQgg3cCdwBhADbpJSHi76LBQrAisD\nJJXQ67qel6+eTH+eOfQWfm8NRvSROJoGul5b81ppZBvRfwIYM29/BrhDSnklcBB4nxCiAbgVuAbY\nDtwihGgD3gVMSCmvAG4HPlfEsStWGKkieo/LgQ5EY4UvgA6MBXA6NDpbsi9mloy/wcylr5Em4bqu\nE47EaPPXAyqitzPLCr0Q4ixgC/Az89B24D7z9v0Y4n4psFNKOSmlDAKPAZcDVwM/Mc/dYR5TKPLC\nsmg8ScXGrHIIhdo3uq7TPzpLZ4sXlzM/R7PWmoSHo3F0oKPZEPpamddKJBvr5kvAXwDvMX9ukFKG\nzNtDQC/QAwwnPWbJcSllXAihCyE8UsqM75jWVh+uRZUDOzv9WQzVftTivEo1J7fHeLt2djQmXqPR\njKKbmr20NtXn/dyTMyFm56Js29CRcvzZzOmMsPFlE0Wzzd810zgnZ4yPeVuLF+/QDIFwzBbzssMY\n86GQeWUUeiHEu4HHpZRHhBCpTklniuZ6fAHj44EFP3d2+hkens7mobaiFudVyjlNTc0BMDs9l3iN\nuGnnDAxOEQ3l7yHvPzEBQFujZ8n4s52T9fqDIzO2+LsuN6+RyaBxI67j97oZm5qr+nnV4mcKsp9X\nui+D5a5RXw+8SQjxBPCnwN8DM+biLEAfcNr815P0uCXHzYVZbbloXqFIRyS2sARC8u1CSxUnqlbm\nuRALtVfYzCpRXOdxJjaDxWtoM9hKImNEL6V8u3VbCPEp4CjwMuA64G7z/weAJ4FvCSFagCiGF/8R\noAm4HngQuBZ4uNgTUKwcwik2TFm3C/Xo+0eNYma9bfnl0AO4nA68da6aKRVgpVbWuR00mc3PA3NR\nGr25l4dQVJZ8Vp0+CbxHCPEI0AZ811yA/SiGoO8APi2lnAR+ADiFEI8CHwI+VpxhK1Yi6UogwHxG\nTr4M5NEnNhV+n7t2IvqwJfTOmq3OuVLIKo8eQEr5qaQfX5Xi/nuAexYdiwE35Ts4hSKZ+aybhSUQ\nACKRwsog9I8F8PvcBUerTT4PRyaniOs6jgLz+itNKDIv9Nau36nZcN47hxWVQ+2MVdiGVLVuihHR\nR6JxhieCee+ITcbvcycsDrtjCb1nQURfG1crKw0l9ArbEInFcWgaTkeKxdhI/kI/NBFE1/PfEZtM\nLVkcCyJ6q7xDDcxrJaKEXmEbItH4gmgeihPRD4xaXaUKtyRqKfMmnJR10+Sbt24U9kMJvcI2RFMI\nvacIWTf9RVqIBRKRb21F9I758g418AW2ElFCr7AN4WgsRURfeAmE+fLExfHooTaadCRn3Sjrxt4o\noVfYhkg0vqAWPSRvmMo/66Z/NIDLqSVquhRCLXn01u/U43bS6HWjoawbu6KEXmEbItE4bncajz7P\niF7XdQbGZulq9S1Y5M2XWvLorZ2xHrcTh0Oj0eeuiSuVlYgSeoVtiMRSRPTOwoR+ajZMMBSjtwip\nlVBbEf28dWP8jpt8HlXB0qYooVfYAl3XU2bdeNyFCX0xF2KhtiL6cFJ6JUBTg4dAKEq0wF3IivKj\nhF5hC2JxHV1n6WKss7CiZv1jhbUPXIzL6cBX56qJRcvQIqGvpS+xlYYSeoUtSNUYHMDttrJu8luM\nHRgtrCF4KvwNnpoQw1Akhsb8l2tTDfbEXSkooVfYglTlD6Bwj75/zNosVZyIHozItxZK+oYiMTwe\nZ6IX73wuvRJ6u6GEXmEL0gl9oR79wGiA5gYPvvqs6/sti9/rJq7bv95NKBJP2DbA/O5YJfS2Qwm9\nwhbMNwZf2GKykIg+HIkxOjlXlI1SyTTVSOQbjsQSGTeQbN3Y35ZaaSihV9iCtNZNAR2mBseD6EBP\nkcvu+mukLkwoHFsQ0Svrxr4ooVfYgnRCr2kaLqcjr4i+f7T4/jxQMyV9Q5EYHmXd1ARK6BW2wMqq\nWZx1A0Zhs3yybopZ4yaZ+TRE+wpiNBYnFtcXRvQ18gW2ElFCr7AF6SJ661g+EX0itbLIEX1TDQhi\nokRxktDXe5y4XQ7bW1IrESX0CluwnNDn49H3jwZwuxy0FaGYWTL+Gqj0ON9dav73rWkaTT63ra9U\nVipK6BW2wMq68RQpojeKmQXobvUVvbdrLewgXVz+wMLv8zAViKDbfI/ASkMJfYkJhqIcOjVZ6WHY\nHkvIXUUS+vHpEKFIrOj+PJBoMG7nyHdx+QOLpgYPkWicuXBhzdgV5UUJfYm599EjfPauXYxMBCs9\nFFuTybrxuJw5C32xa9wk43I6aKh32TqiTwi9Z3FEb/8vsZWIEvoSc3RgGh2YmFEfjEKYr3XjXHKf\n2+UgruvE4tmL/XyNm+ILPRgWh53FcN6jXxTRJ9Yf7PslthJRQl9irFztQMje2+ErzfzO2NTWDcxn\nimRDKYqZJeP3uZkO2rfeTSi8NOsGklIsVeaNrVBCX0KmA+HE5XtQCX1BWIuDmYQ+kkOddKuYWXeb\ntwijW0qTz4Ouw2zQnpFvOLKw6YhFU4PaNGVHlq3kJITwAXcC3UA98A/A88BdgBPoB26UUoaEEDcA\nHwHiwDellN8WQrjNx58BxICbpJSHiz+V6sNqagFK6AslU0RvZeJEcojo+0cDtPrrqPcUr5hZMslN\nwq0o2E6kXYxV1o0tySaivxZ4Wkp5FfA24J+BzwB3SCmvBA4C7xNCNAC3AtcA24FbhBBtwLuACSnl\nFcDtwOeKPosq5fTIbOK2EvrCsDz6dOmVkH1EHwrHGJ8OlcyfB2g0BXHGppFvOo9eWTf2ZNlwRkr5\ng6Qf1wAnMYT8z81j9wN/A0hgp5RyEkAI8RhwOXA18D3z3B3AfxRj4Hbg9Oi80CuPvjCiGTdMGWJk\n2Q3LcXJ4BoBVJfLnYb4ujF0zbzKlV4KybuxG1tetQojfA6uBNwA7pJQh864hoBfoAYaTHrLkuJQy\nLoTQhRAeKWXad0prqw/XonK0nZ3+bIdaNYxMhRK3NYcj5RzsOK/lKMWcHOb7oburic5FKZHNfmNn\na6O/PqvXfkoab9NzNndmPdZc59TX0wRAPM3fvVpINzaX25CG7k7/gnNaWo0vx7lIvGrnVa3jKpRC\n5pW10EspXyaEOB+4G0jeSphuW2GuxxOMjwcW/NzZ6Wd4eDqbYVYVx/qncDo0YnGd0YngkjnYdV6Z\nKNWcZmaNL83pyQCO2MLIPRoxrpaGhmdoMyPpTLx4cASANp87q7HmNSezyFr/0HTV/o0zzWt80tj3\nEZidW3KOr86V8v1cDdTiZwqyn1e6L4NlPXohxEVCiDUAUsrnML4cpoUQVrpCH3Da/NeT9NAlx82F\nWS1TNF8rBENRxqdDrO32J35W5M9ytW4ge4/+6MA0HpeDnhJ69Havd5NuwxQY9o1d57VSyWYx9uXA\nXwMIIbqBRgyv/Trz/uuAB4AngUuEEC1CiEYMf/4R4CHgevPca4GHizb6KsbKuFnfa1zCK6EvjHAm\noXdmn0cfjsQ4PTLLmu5GnI7SZRfbvd5Nulo3YKw/zAQixOP23COwEsnmnf51oEsI8QjwM+BDwCeB\n95jH2oDvSimDwEeBBzG+CD5tLsz+AHAKIR41H/ux4k+j+rA2SvV1NVDncSqhL5BErZsU9ejdphhF\nYssvxp4cniWu65zZ3VTcAS6i0RJ6m2anhMLphd7f4EEHZmy6R2Alkk3WTRAjRXIxr0px7j3APYuO\nxYCb8h2gXbFSK1e1N+Crc6msmwKJROO4XQ60FJUmE31js4jojw1MAXBGT2kX7JwOs96NTcUwXdYN\nJOfShxNZOIrqRu2MLRGWdbOqowFvnUtF9AUSicZTdpeC+Zrp2Xj0RweMBa0zSyz0YHjZdq13E4rE\ncTkdOBxLv1j9Nr9aWYkooS8Rp0dm8fvcNHrdeOuczIVjqoZ3AURi8ZT+PCRF9FlUsDxmLsT2dpRu\nIdbC77Wvlx2OxJaUP7CYz6W359XKSkQJfQkIR2IMTwYTG3K8dS5icT2vLkgKg2g0ll7oTUFa7vcb\nicY4NTLLmq7SLsRaJLzsOfsJYigSS5lxAwutG4U9UEJfAgbGAug69HYYQu+rM5ZClH2TP5ZHn4ps\nI/qTw7PE4jpry2DbgL3LBYQiMTyu1EKvatLbDyX0JaB/Ua1zq3CWEvr8CWf06M2sm2jmrJuEP99d\nJqH32jfFMhSJpVyIhSTrZtZ+81qpKKEvAYmMm0URfa1n3kSi8US2Rime253GM842oi9Xxo2FXevC\nxHWdcCSe1qNPXKnYbF4rmdLUaF3hWDn08x69ERnVekT/lXueJxiJ84kbLyrq88bjOrG4njaiz9aj\nPzYwg8vpSHwBlxq7bppKVApN49H76l04HZrtvsBWMkroS8Dp0QDeOictjUbk4zUj+rlQ7TZU1nWd\nA6cmCUfijE3N0dZUX7Tnnq9Fn1p4rC+AaAahj0TjnByeYW23P+Wmq1Jg18g3Uw49gEPTaPS5mVbW\njW1Q1k2RicXjDI4F6G1vSGzu8a4A62ZyNpwoQXDw1GRRnztTnRuY9+gzRfSnRmaIxfWy5M9b2DWi\nD2fYFWvR5FP1buyEEvoiMzQeJBbXF9Q6XwlZN0PjwcTtgyfLK/TZePTWQmy5/HmYT0OstYgejHo3\nc+FY1j0AFJVFCX2ROT1iZtwkbcipXwFCPzwxL/QHih7Rm/1i03n0VvXKDFk3xyyhL1PGDUCj142G\n/TYWhSKpG4Mn42+wvsTsNbeVihL6IrN4IRZWRtbNoBnRu10OTgzOJIpiFYPlInqHQ8Pp0JaN6F1O\njb7O8izEWuNq8LptG9F70mTdgNo0ZTeU0BcZq31gb1Jmx0rIurEi+pds7SGu6xzunyrac2dqDG7h\ndjnSevTRWJxTwzOs7mws20Kshd/ntl3Um6kWvYXaNGUvlNAXmf6RAB6Xg46krJOVkHUzNB7E5dS4\n8rw+oLgLsstF9GA0DU8X0Z8aniUaK+9CrIXf52E2aK96N5lq0VskInqVeWMLlNAXkbiu0z86S0+b\nb0HVv5WQdTM8EaSj2cuW9W1AcRdksxF6dwahPzZY/oVYiyaf23a12y3bLV0JBJj36JV1Yw+U0BeR\nsck5wtH4AtsGjGYZHpejZq2bwFyEmWCErlYvrf56ulq8HDo1SbxI1TqzE3pn2sXY+dLEpW02kgo7\nthTMxrqZj+jtM69KcXxwmli8sgUNldAXkdOJhdilJXDra7gm/ZDpz3e2GG2EN/Q1EwhF6TdLQRRK\nQugz+OtulyNtPfpjA1NlX4i1sGMu/Xx6ZabFWOXRZ8PBU5N86js7+fWuUxUdhxL6IpJIrWxfKii1\n3HzEyqHvajWEftPqZqB4aZbZevSpesZGY3FODM3SV4GFWLDn7thwNumVPlWTPhuOmkkJxU45zhUl\n9EUkEdGnqKXiq3MSqNHFWCvjpsuM6Df2GUJ/qEg+fbZZN7G4vmTR8/TILNFYvKz588nYOaL3ZBD6\nOo+TOrfTliWYy8nAmBH8nRjt2TECAAAgAElEQVSaqeg4lNAXkf7RWZwOLRHZJuOtcxGNxbPqgmQ3\nFkf0qzqN9onFjugzLQ5adXAW/37L2TowFXb0srPJugFoanDbau2hElhCPzQWKOreklxRQl8kdF2n\nfyRAV6s3pUVgZd4Ew7Vn3wyNB9GAjmZD6B2axoa+JobGg0UROEu8XctE9LC0b+yxCpQ+SCYR0dsp\n6yZbofd5mA5EVIvMDFhCrwMnRyoX1SuhLxKTs2ECoeiCHbHJeGu4DMLQRJC2proF1opl3xQjnz5R\nAiELoV9ce+XY4DROh8bqzsaCx5EP86UC7BP5JkogZMi6AcOnj8X1mk4bLoRQOMbYVCjxcyXtGyX0\nRcLKMFmcWmnhrdEuU5FojInpUCLjxmJTMYU+ll3WTfK5YFQSPTE0Q19nQ8YviVLSWG/Uu7GTl51N\n1g0Y1g3Yy5YqJ4PjRjS/rtdI61VCXwOcNtsHpkqthKQyCHO1JfTDE3PosGRdYt2qJhyaVpSNU9lu\nmAKIJGXenB4JEInGK+bPg1HvptHntp11o2ksm6U0n1Fkn7mVE8u2uUh0ommVFfqsGo8IIT4PXGme\n/zlgJ3AX4AT6gRullCEhxA3AR4A48E0p5beFEG7gTuAMIAbcJKU8XOyJVJpEjZs01s18YbPayrxZ\nnENvUe9xsaarkaMDUxkbe2dDOMv0SlgY0R9NtA4s/0apZPw+D5MzoeVPrBLCYaNfrNVPIR12XGgu\nJ5bQr+lqpKfNx8mhGeK6jmOZ32spWPbTJ4R4BbBNSvlS4I+ALwOfAe6QUl4JHATeJ4RoAG4FrgG2\nA7cIIdqAdwETUsorgNsxvihqjv6RWTSgJ21En591E9f1qrZ75jNuls57Y18z0ZieWBDNl/msmywi\n+qSsm0qUJk6F3+tmdi5a8d2R2RKKxDKmVlr4G9SmqUxYQt/d5mNNVyNz4Rgjk3MVGUs2YdbvgOvN\n2xNAA4aQ32ceux9D3C8FdkopJ6WUQeAx4HLgauAn5rk7zGM1x+nRAO3N9WkzFfLNunnoqRPc8q+P\nJvy+amN4fGEOfTIbExunJgp6jWgiol8+vTKcVAbh2ICxELumq/w7YpOxFmRnbGJxhCKxZf15SC5V\nbI95lZuB0QAup1HgcE2XkQxwYrAy9s2y1o2UMgZYe9nfD/wceI2U0roWHQJ6gR5gOOmhS45LKeNC\nCF0I4ZFSpg0DWlt9uBZ9qDs7KxuVZWI6EGZqNszFZ3enHWevKYgOl3PBOcvNa9+JCcLROHuOT7Jt\nc3fxBl0kJsxobsumTnz1RoRnzekl5zr5xn27OTE8W9DfTzO94p7uJppM0VxMq5na6fPV0dnpJxaL\nc2J4lrU9flb1tuT92haFjL+rzbjacdV7qu59nGo8kWicFn/9smM9I2qkVUbielXNqxxj+da9L9LV\n5uWNV25Ieb+u6wyOB1nV2UB3dxPbNnXxP789zNhsOO/xFTKvrJuDCyHehCH0rwYOJN2VznDK9XiC\n8UXRa2enn+Hhwi7/S8mBk0bE2uGvSzvOkLkYNzI2mzhnuXnpus6BE8ZzP/LsSV5xXm8xh10UTg7N\n0Oh1Mzs9x+z03II5aUCrv47dh0cZGppa1vNNx6z5ZTI1ESAUSO11h0MLf78nh2YIR2L0dTQU/N4p\n9P3nNiuZHj85ToOr/P5sOtLNay4cw6mx7Jyj5u98aHS2aj6f5dCKUyOz3Pu7QzR63VwmOlO+rydm\nQgRDUTqb6hkenqbJTMbYd2Q0r/FlO690XwZZrZAJIV4D/B3wWinlJDAjhLCu1fuA0+a/nqSHLTlu\nLsxqmaJ5O3I6kVqZ2p+H/JqPDE0EE+cfHZhmbKoy/l464nGdkYlgyp3AFhv7mpkORBb0lM2V+Q1T\n6UVycd9YqzRxJTNuLKxNU3awOKKxOLG4npVH3+h12bJVYqE8uWcQMEpPp3tfD5hZeNaaXUujh0av\nu2KZN9ksxjYDXwDeIKUcMw/vAK4zb18HPAA8CVwihGgRQjRiePGPAA8x7/FfCzxcvOFXB/2J1Mr0\nXnA+WTdH+w2x6jEv/Z/ZP5zp9LIzNjVHLK6n9OctNq8xbJO9x8bzfp1wNIbToeF0ZFiMNT1lK0On\nEs3A02GnJuHZlj8AcDoctmyVWAi6rvPknoHEz+n2iVgLsdZnV9M01nQ1MjI5V5Hkimwi+rcDHcAP\nhRC/EUL8BiN75j1CiEeANuC75gLsR4EHMb4IPm1G/z8AnEKIR4EPAR8r/jQqSyKizyD0+WTdWFkj\nb7piHVB9Qm+lVmaK6LeZjUhePDKW9pzliETjGcsfALidC2vdHBuYxqFprKnQjthk7BTRZ7sr1qKp\nwbOi0isP908xPDFHn7kx8lCWQg+wtttckK1AVJ/NYuw3gW+muOtVKc69B7hn0bEYcFO+A6w0cV0n\nGo1nvJTtH52lpdGDrz79r9PtcuB0aMzlIPRHB6bQgHM3tLNhVRP7T0wyE4zQ6HXnMoWSkS6HPpnu\nVh+dLfXsPTZGNBbPq1RwJBrPmFoJyemVMeJxneND06zqaMjKgig1jT4r66b6BTHbXbEWTT53okJo\nJcpAl5sndxu2zVtevp5v3Ld72Yi+O0noE5k3QzOJK91yUft/mQL52e+PcstXH2V8OvUi4Fw4yuhU\nKGVp4mQ0TcNb58q6Lkhc1zk6ME1Puw9vnYsLN3cS13WeOzCS8xxKxfD48hE9wLZ17QRDMQ6fzq9h\neDYbrjxJefT9o7OEI3HO6Kl8NA/JTTpsENGHly9RnIy1O7YYrRLnwlFGJvJfyyk18bjOU/uGaPS6\nOWdDO+t6mzg1PEsgxW73gbEAjV73gqBsTZdhI1YioldCvwzPHxolGIrxwuHRlPdb/nwm28bCW+fM\n2roZGg8yF44lFhMv3NwJVJd9M5Qhhz6ZbesKs28isXjGOjeQVNQsGq9o68BUNHjdaJo92glmW7nS\nopi7Y+/8xT4+8e0nq9bz33t83EijPqsLl9PBhr5mdOBI/8IAJhqLMzIxt2TzZG+7D6dDU0JfbUSi\ncY6b2Ru704hUf4b2gYsxukxltxhrdaaxtu93t/no62jgxSNjzFVJqeOhiSB1bmfa3HaLs85oxenQ\n2H0k9ZflckSziOiTd8ZWujTxYhyaht/rtkVEn8tiLCTvji1sbrNzEZ7ZP0w4Emf/icp2Y0qHZdtc\ntsXYz5KuQuvQeJC4ri/w58GoHbSqo4FTwzNLGuSUGiX0GTg5PEM0ZvxB9hwdS/nHsdoHLmfdgJF5\nE4rEstoKn6phxgWbO4nG4rx4OP+FzWKh6zpDE0E6W7zL5sd761xs6GvmaP90XtFaNtZNskd/bHAa\nTZv3RKsBv89TtZFqMtl0l0qmWBH9Ljmc+KztP1HYTupSEInG2LV/iLamusSO7w19RhC2WOgtf763\nbWnwt6arkXA0Xvad7kroM2B5yg31Lmbnoonc7GT6lylmlsx85s3yUf3RAUOsrJV6gIuqyL6ZDkQI\nhWPL+vMW29a1oQN7juaWZqnrOuHo8taN1X0qFIlzfHCGVR0NWUel5cDvM+rdRNM0MK8Wcl2Mne8d\nW5jQW7npTofG/pPVJ/R/MC3cS8/uThQl8/s8dLf5OHx6knhS85VUGTcWyQuy5UQJfQYsob/6otWA\nEdUv5vTILI1edyKFLhOW0C+XeROP6xwbnKa3vYF6z3wmz9ruRtqb6nn+0GjFBWNoIjt/3mI+zTI3\n+8aK8rKN6E8OzRCKxDizwoXMFlPMRctSEsqiMXgyiZr0BQj9+HSIfcfG2bi6mXWrmjg+OF11hfye\nML+ILt2ysAzJxlVNBEOxRIo1zG+W6lZCbw8O90/hrXPxygtXo7HUp49E4wxNBOlt92W1vd+b2DSV\n+U08YPaXXLyrU9M0LtjcQTAUZV8BG5CKwZB56dmZZUS/ttuP3+dm95GxnFrPRbIoaGbcb7yVT5kf\nuGrx5y3s0iTcyrrJdTF2ejb/ee3cN4SO4X2LNS3oevr89EoQDEV5/uAove2+JXbghtVLffqB8QAO\nLXXvaCX0VcbsXITBsQDrev00NXhY2+3nwMnJBQ1+B8cC6Hp2/jxkv2nqWIaG1tVi3yxuCL4cDk1j\n65ltTMyEOTU8u/wDTBLdpbKM6C2qTejtsjvWqv7pyXLDVDGsmyf3DODQNC4+q4tNq438cllFPv0z\n+4eJxuJctqV7SUBnLcgmfzENjAboaKlPua/A7/PQ0uhRQl8tWClT61cZCy5b1rUSi+sL3oDLNRtZ\nzHy9m8we/RGzYUaq9MBNq1to9Lp59sDIAl+w3AznaN0AbDXTLF/Iwb7Jpl8sGBkNlneqabC2q7qE\nfn53bHULfa7pld46Jy6nlvcX2OBYgCP902xZ10qTz8PGvmY0jUQxv2ognW0DRpDnrXNy8JTxmZ0J\nRpgJRlL68xZruvyMT4fKauMpoU+D5c9b/R63nWmIVLJPb/lyqzIUM0sm24jeWohd0700a8Th0Dh/\nUweTs2EOn8pvA1IxGJoI4nRotDXVZf2YRD59DllD2bQRtLDO6W1vyHoLf7mwS9u9cDg3j17TNLMM\nQn7zshZhrZRFX72LtV1+DvdPJb7kK8nkbJg9R8dYv6opZXMdh6axflUzg2MBpgPhjAuxFpWwb5TQ\np+GIKfTrTaHfuLoFj8uxwKfPpphZMr4sPPp4XOf44DR9GbJGqmHz1NB4kPbm+oyFxhbT3FjH2q5G\nDpycWGCBZSIh9Flsr7eEvtIdpVIx79HbJaLP/u9qpY7msvYCRkbVE3sGcbscXLCpM3F80xqjM1m+\nO6mLyc69g+h66mjeImHfnJ5aUrUyFUroqwRd1zncP0V7Ux3NjUbE6nY52LymhVMjs4lyCP2js9R5\nnLT6s4tqE1k3GTY8zW/fTy9WW89spc7j5Jn9wzl/uIpBMBRlOhDJ2p9PZuv6NqIxHXkiu8XkfCL6\naihNvBi7RPS5WjdgrD+Eo/HEY7Pl+OAMA2MBztvYkfhsAAizDsz+IjSWL5Qn9wyiafCSs7rSnpPs\n0yci+hTRv8W80Jevhr8S+hSMTs4xHYiwblXzguOWx7zn6BixeJyBsQCrssy4geyybrLZvu92OTln\nfTtDE8GcFjaLxfMHjXo7md7M6di2rh3I3r7JR+irbSEWSOwezrSxaCYYSax9VIpcN0zBfC2fXKtz\nLrZtLKwF2UpvnBqaCHLo9BRnn9GaCPhSsX5VExpw8GSS0GeI6LvbvHhcDo4NqIi+ohzuX2jbWGw1\nffrdR8cYmZgjGtOzXoiF7DZMJYS+N7NYXbi5Ayi/fTM5G+a/dhzA43Zw9cWrc378ptXN1LmdWde9\nyTbrBoxNUxoLN5lVC756Fw5NYzrDAtx//Gwvn7lzZ0X3SORaAgHme+JO57A7Nq7rPLl3EG+di3PW\nty+4r6nBQ2+7j4OnJivaUP2pDIuwyXjrXPR1NnBkYIpTI7PUe5w0ZygL4nQ4zIJoMwTmynOFp4Q+\nBZY3aGXcWPR1NtDc4GHP0fFEvna2qZUAXs/yXaaODkxlVUf93PUdOB1aWYVe13XuelAyE4xw/faN\ndOcR0bucDs5a28LAWICRyeWj12zz6AFee+la3vqKDQs2mVULDk2j0Ze53s2R/ilm56KMTFauk1go\nEjMymBzZtzxsyiPF8sCJCcanQ1wkOlN+iW9a3UIoHON4hZppW+sHLqeDizant20sNvY1E47EGRwL\n0NO2/FX+5jUt6JTPnlJCn4LD/YbYLl7U0zSNLWe2MTUb5qm9xrd9bxbFzCyWy7qJxeOcGJyhr3P5\nOuq+ehdnn9nK8aGZsl3uP7lnkGf2D3PW2hZecWFf3s+zzYzgHn7m1LIF2nKxbl66rYfXXnpG3uMq\nNX6fO23UG5iLMmneZ13+V4JQJJ7TQizktxksnW1jYfn0lUqzPDk8y+mRWc7b0J6xz4TFhr55mzeT\nbWMh1pbXnlJCv4hoLM7xgWn6OlOn6G1d1woYRZggt4i+3uNE09J79P0jAcLReNaLiVb2zbNliOon\nZkL85y/3U+d2ctPrzk7krOfDeRvbqXM7+cWTx/nLrzzK137yAk/vG0q5mJdL1k210+TzEAilrneT\nLO6DlRT6cCzn1NRs1h+SicXj7Nw3RHODh7PWtqY8x2rMUamNU0+Y7QKXs20sNiYLfYbUSosNq5qN\nuj5K6CvDqeFZwtH4EtvGYovp08fiOi6ng87m7DNPNE3D63GljejnN0plJ/QXbOpEo/Q+va7rfO8B\nyexclLe9cmPGjlLZ0NHs5VM3XcIbLz+T9qZ6npbDfO1/X+QjX3mUb9y3m2cPDCcEPhePvtrJFPla\nxfEABgtopF4ooUgs52JwuVo3xwZmmJ2Lct7GjrQWUXtzPe1NdRw4OVn2jYFxXeepPYPUe5ycu6F9\n+Qdg7BC3moxkI/R1Hidn9vo52j9dlrLj1WdmVhhrIXZdb2qhb2msY3VnAyeHZ+lp8+XkZYJh36Qr\naja/EJtdw4zmBg8bVjdz4OQkU7PhlHXhrQ0fl27pzjsK//2LAzx3cISzz2hl+/mr8nqOxXS3+fjj\nK9fzpivWcWJohp37hnhq7yBP7jH+eetcXLipI/Ehrwmh986XQVicklstEX04EsPjrs/pMblaN3uP\nGQvxW85MHc1bbF7TwuO7B+kfDSR6tJaDgycnGZ0Kcfm2nqyzjzRNY2NfM88dHMlK6MGY36FTUxw6\nNZXI6CsV9v/0FJkjaRZik7Gi+mx3xCZjtBNMnXVzbGAap0NjdQ4NrS/c1IkOPHdwaYvBeFznjp+8\nwL/fv4dH/9Cf81gBxqbm+K8dB6jzOLnpdWdlnUqaLZqmsbbbz3VXbeAf/+yl/P17LuY1L1mDt87J\nYy8O8LjZ7KEmhD5Dkw5ro02d21n2WuUWcbMkdK4RvT/HmvRWQb50to3FpjWVSbN80lx/u3RrdraN\nxVtevp63vWJj1n0QRMKeKn2BQvt/eorM4f4p6jzOjLtdz99opDbm06rOW+dkLhRdcjkajRl11Ps6\nG3IStQtF+l2yO3ad5KC5qv/j3x7KufTrodOTfPbuXQRDUd7+yo105GBT5YOmaazrbeLtr9zE5z/4\nMj7+Jxdx9UWrOWd9OxsW7WmwI/4Mhc0GxgJ465ys6/UzNhXKefNRMYjkWKLYwu1y4K1zZbXrNxKN\nc+DkJKs7G5btTFaJBdloLM7OvUM0+dycfUbmL6LFrO5q5I8uXZt1MLSxrwVNg/3HSz8/Zd0kEQxF\n6R+ZRaxtyWjJnHVGK3//notzirwtvHUudFhSAuD0yCzRWDznL4+uFi+rOxvZc3SMYCiayOwZHAvw\n498eotHr5rIt3ezYdZKfPn6U67dvXPY5dV3n4WdP8f0dB4jrOm95+XquOq84lk22ODSNjaubE918\naoF0TcLjcZ3B8QBruvz0tPnYd3yCofFg2Ttk5VP+wKLJ585qw9Th05OEo3HOykJEe9p8+H1u5IkJ\ndF0v+tVkKvYcHWcmGOHqi1bnVN4jHxbX9ckmhThfVESfxNH+KXRgXQbbxmJdb1NedoIvTYplthul\nUnHh5g6iMT3RwDyu63zn53sJR+P8yas389btG2hrquOXO08kGoakIxSJ8a2f7uHuh/bjrXPxV28/\nnze87MyyfMhqnXQlfUcmg0RjRo9Rq3BWJXz6fMofWPgbjHo3yy2c7jVtm2yiZU3T2Ly6hfHpEKNl\n2lvwZI7ZNoWyeU1LWer6KKFPIt2O2GKSrgxCqh6x2bK4yNmvd51k/8lJLhKdXHJWFx63k+u3byQa\n0/nRwwfTPs/gWIDbv/c0j+8eZF1vE5+66ZLEbmBF4aRbtLSK4/W2+xILefn49Hc9KPno1x9nd4pO\naNmQKH+QR+XPJp8HXYfZZUrv7j02jqbN2zLLYaVZ7j1eeh87FInxzP4ROprr2ZBFsFcMrHz6UqeR\nZmXdCCG2AfcC/yKl/KoQYg1wF+AE+oEbpZQhIcQNwEeAOPBNKeW3hRBu4E7gDCAG3CSlPFz8qRTO\n/I7Y0tkF8+0EF1o3R/uncDk1+jpyv1xf09VIR3M9fzg0yqmRWe4xLZs/ebVIROIvObuLHbtOsEsO\nI4+PIxYthD2zf5hv/2wPwVCMV1zYxzteuakmFkCriXQefXJp2+42Yx1kcCy3FMv9JyZ4+NlTAHzp\nv5/j1Zes4bqrNuT0Nywkok/Uu5kNJ+a55PnDMQ6fnuLMniZ89cu33gQ4Z0M73//VAXbJYa48t7T2\n4fMHRwhFYlyzZXXZrmA3mdakPD4Bl5fudZZ9FwghGoB/BX6VdPgzwB1SyiuBg8D7zPNuBa4BtgO3\nCCHagHcBE1LKK4Dbgc8VdQZFIjAX5cDJSVoaPVlXo8wHq/lIckQfjcU5OTzD6s7GvMRV0zQu3NzJ\nXDjGF//7WcKRODe8avOCehuapvHOqzcD8P1fHSAeNy6xY/E4P3r4IF/98QvEYjofeMMWbny1UCJf\nAhL1bjJE9J0tXjTNaEeXLfG4zn/t2A/Au/9I0N3m46GdJ/iH7z7NqeHsSwiEzXUjTx5/+3lbKn1E\nv//kBLG4ntMiZ0+bj7Xdjew+MlbSRh2hSIz7f38USL9btxT4fR76Ohs4dGqypDWOsvmLhoDXAaeT\njm0H7jNv348h7pcCO6WUk1LKIPAYxnfU1cBPzHN3UNLvrfzQdZ3vPbiPmWCEq87Pf2t/NqQqg3Bq\neJZoTC+ovK5l30zOhLlgUwcvOXtpfY71q5p46dYejg/O8NgL/UzOhvnSfz/HL548Tlerl0+8+2Je\nuq0n7zEoMuPQNPw+9xKPfmAsgKZBV6svsQlvKAeP/tEX+jk+OMNLt/aw/fw+PvXeS9h+/ipODs/w\n6Tuf5pdPn8iqnHWiMXg+1k3D8q0Sc/Hnk7l0SzexuM4uOZTzuLLl+zv2c2p4lldc0EdfHkkWhbB5\nTQvhaDzRQrQULCv0UsqoKdzJNEgpQ+btIaAX6AGSc/yWHJdSxgFdCJE5r6rMPPpCP0/tHWJjXzNv\neFlpa6WkEvrEjtgC1gY29jXT6q+jod7Fu18j0l56vnX7BjxuB//z20N8+jtPse/4BBds6uDW91zC\n6jJneaxE/CkKmw2MztLZ7E1cRXW1eZkKRLKqbBiYi/Lj3x6izu3krds3AIZQv/uPzuLD151DvcfJ\n93cc4Gs/eXHZ9NqCFmOTrJt07D02jsup5ZxJdYlZC/6pvaUR+id2D/C75/tZ29XIO65ePiut2Igy\nlHsoRnplOjMr1+MJWlt9uBalGnV2lqbG+KnhGb6/4wAN9S4+9t6X0JXlrrZ86ekytro7zPl1dvoZ\nnDAyCi44u6egef7TX1yJpkFPhj0AnZ1+rr96M//5wD4cGrz39Vt4yys2FtWTLNXfqpIUa07tLV5O\nDs/S0mrsl5gJhJkKRNh8RlviNdb1tfDi4TFCusYZy7zuf9y/m6lAhBtfezab13csuO/VnX4u2baK\nL9y9i137hxmanOMTN72EVUkRa/K8PPXGIm5HW0PO8107acR9MbSUj50JhDk+OM3W9e2sXpXdQmzy\nGM8+s419x8Zw1rlpa0q9c3f34VHu/f2LXCi6OGdjR1b246nhGe56SOKtc/J377t0we+mXLy0zs3X\n793N0cGZjL/3Qt6D+Qr9jBDCa0b6fRi2zmmM6N2iD3gi6fjz5sKsJqXMuLNifJE/2dnpZ3i4+Jc1\nkWicz921i7lwjD9/01a0WKwkr7PgNc0obXjMEPzh4Wn2HRnD5XTgdVLQ67sA9OWf48qt3UxNzbHl\nzFbE2lZGRopXCrZUf6tKUsw51Znic+T4GK3+Og6dMja0tTV6Eq/RZFZLlIdHaPWm/4gOjgW473eH\n6Giu54qtXWnH+OG3bONHDx/il0+f4CP/8ltuvnYL523sWDKvEfM9GZ6L5DzfWMS4WhgYmUn5WKMb\nGmzsbcrrd3nhpg72Hh3jgccO86qL1yy5PxKN8YW7djI6FeLe3x3CW+fivI3tXLS5k23r2lPaUeFI\njNvv2kUwFOPmN27BjV6x9253q5fdh0cYHJxKuYcn2/dgui+DfFfcdgDXmbevAx4AngQuEUK0CCEa\nMbz4R4CHgOvNc68FHs7zNYvOj393iGOD01xxbi8vObs8CzCLs24iUWMhdk1XI64yVWj0uJ28+eXr\nl2TeKEpP06LMm/4UPUatzJvlyhX/4NcHicV13vaKjRk327icDt55zSY+8IYtRGNxvnLPH7jvsSOJ\nBXmLcB7dpSyalrFu9h41yx7k6M9bXCw60TQS5cEX8/CzpxmdCnHVBau55uLV+OqcPLF7kDt+8iJ/\n+ZVH+OqPX+D3L/Yzm2SH/fevDnBiaIarzl/FZVsquzYl1rYQDMVK1kd22YheCHER8CXgTCAihHgr\ncANwpxDiz4BjwHellBEhxEeBBwEd+LSUclII8QPgVUKIRzEWdt9bkpnkyIuHR3nwqRN0t/m44ZrN\nZXvdxVk3J4dniMX1vDZKKexHwssOLKw935tkGVotGocyVLF88fAozx0c4ay1LVwkOtOel8xLt/Ww\nqqOBr/74Bf73kSP0jwV596s3J4KPxGJsHjtjG7zulBlFFnuPj+NxOzLWkMpEc2MdZ61tZe+xcUYm\ngnQkVVANhqL89PdH8dY5ufnN5xAKhHjn1Zs4NjjNLjnMM/vn/zkdGmed0UpfRwO/ee40qzsbeefV\nm/IaUzHZvKaF3z3fjzwxUZJWmMsKvZRyF0aWzWJeleLce4B7Fh2LATflOb6SMDkb5ls/3YPTofHn\nb9yaV5ZBvixejC1ko5TCfixuEm6VJ05eV2lrqsfl1NJG9PG4zvd/dQBNg3dcvSmn9ZUzevzc+t6L\n+fq9u3ly9wDHB6b4i7ecQ297w3wbwTw+D+kyigAmZ0KcHpll2/q2gq5aL93Szd5j4zy1b4jXXTaf\nNPHgU8eZCUZ488vX09TgYTgQQtM0zuxp4syeJq67agOnR2YTYr/7yBi7j4xR53bywT/emtcVTLFJ\n1N8/Ps6rL1lqTRXKitnMTZMAAAwDSURBVKt1E9d1vvXTPUwFIrz9lRvL3kja61kk9P1WDfry7MRT\nVJaE0Cd1k/LVuRLWB4DDodHV6mNwPJCyxsvBU5P0jwZ46dYe1nbn/v71+zz81dvP42dPnuB/f3uI\nf/ju03zg2i0FZd1Yzzs6tfQqxNrVmmta5WIuEp3c9aDkqT2DCaGfmg3z4M4TNDV4eFWGHsarOhpY\n1dHAG152JiOTQf5waJTVnY059XwuJR3NXtqb6hP19wtp7JOKFbcr5sGnjrP7yBjnrG/nVSX45lwO\nh0OjzuNMCP2xgWncLkdeJY8V9iNRBiEYIRaPMzQepLd9aY/R7lYvwVAspRVilboopB6L0+Hg/W/c\nxs3XbiEe1/nX/3mBZw8Ypa7zFfqmBjfBUIwdT59IXB3AvD9fqNA31Ls5Z307x4dmEldCP338KKFw\njGtfdmbWvYI7mr288sLViSi6Wjj7jFZmghFmcmjJmC01JfTTgXDGXOFDpyf58W8P09zo4f2vL6wd\nXiH46lwEQlFCkRinRmZZ291Y8kp5iuogeWPRyMQcsbieslFFt3lssX2j6zq75DDeOmfBwglw2dYe\nPn7jRXQ01ycWUvO1Ml66tQePy8F/7TjA//364/ziiWMEQ1H2HhvHV2dUaiwUayPgk3sGGZkI8ptn\nT9HRXM9VRWqIU0neun0DH7n+vEQwUExqyrr57N3PEJiLcNPrzk7UjLcIzEX5xr27icd1bn7DlmVr\nYZcSb52LqdkwR09PGgux3cq2WSnMbyyKpMy4sUgubpYceR4fnGF0ao5Lt3QXrUzF2m4/t773Er71\n0z0MTwQTFVZz5fJzejlnQzu/3HmCXz9zkh/95hA/fdwQ+ws2pW8bmAvnb+rA43Lw1N4hRibniMZ0\n3vzy9WXLWCslTQ2erFsX5or9fztJvO7StQRDMb5yzx+4+yGZuHzUdZ3vPrCPkck5Xv+yMzi7whUZ\nvXWGdXPQ3AmnMm5WDr46F06HxnQwTL+Zt97TttQn7m5NXdzMsm2skhfFotHr5iPXn8dtf3ppQYLc\n5PNw3VUb+MIHX8abr1yH9VTnrC+OgNV7XJy3sYOBsQC/f3GA1Z2NZSspbGdqKqK/8rxVrOtt4hv3\n7ebXz5xi3/EJbr52C0cHptm5b4iNq5t50xXrKj1MvHUuYnGd3UeMnYgq42bloGkajT4307ORRPvA\n3hQRfXeacsXP7B/G5XRwzvrSBCvF2iHtq3dz7eXreNUlazh0aqooNpPFS87uZuc+oxzCdVetr5gF\naydqSujBaOf19++5mB89fIhfPXOS2773NJqm4atz8WfXbq0KL9zKvPnDwWE8bkfVrPwryoPfa2Sn\n9I8FcGgaXa1LWzQ2N3io8zgXNCAZHAtwamSW8zd2ZL3wWGnqPa6iN74+d0MbLY0eetsbSmZ11Br2\neLfkiMft5IZXb+acDW38x8/2MhWIcPO1W2lvzq27famwcuknZ8JsXN1cFO9SYR+aGtycHJ7h1PAs\nnS31Kf1lTdPobvXSPxpIpNtZts0FmzuWnL+ScLuc3P6By3A5NdX5LEtqUugtzt3QwW0fuIyRyWBV\n5aknL3Yp22blYeXSB0NRNmeo5NjT5uP44AwT0yHamurZtX8Yh6YtSTRYiXjzXDBeqdT8b6vR66bR\nW/x0pUKwyiCAEvqVSHL6XCbbrrt1PsVS0zQOn57irLUtaTs4KRTpqHmhr0a8CyL66rnSUJSHZKFO\nlVppkWgrOB5M5NNfJJY2lFEolkMJfQWwhN5b50y5WUZR2ySXO8j0909k3owFElUNL9ikbBtF7iih\nrwCW0K/va1ELsSuQrCN607o5fHqKw6enWNfrT9t0Q6HIhBL6CmDVJN9UZbU2FOXB8ugb6l34M6wf\nWetLB83mJMXeJKVYOVQ+qXwFsqGvife+9iyuv7p8dfAV1YP1Rd+TopjZYiyfHpTQK/JHCX0F0DSN\nl5+3qqL1dhSVo62pntWdjVkJt2Xf9Lb71MY6Rd4o60ahKDNul4PPvP8lWZ1rLchm20VKoUiFEnqF\nooq59OwujvZPsf38vkoPRWFjlNArFFVMV6uPD193bqWHobA5yqNXKBSKGkcJvUKhUNQ4SugVCoWi\nxlFCr1AoFDWOEnqFQqGocZTQKxQKRY2jhF6hUChqHCX0CoVCUeNouq5XegwKhUKhKCEqolcoFIoa\nRwm9QqFQ1DhK6BUKhaLGUUKvUCgUNY4SeoVCoahxlNArFApFjaOEXqFQKGqcqm88IoT4F+AyQAf+\nUkq5s8JDyhshxDbgXuBfpJRfFUKsAe4CnEA/cKOUMlTJMeaKEOLzwJUY76XPATux8ZyEED7gTqAb\nqAf+AXgeG8/JQgjhBV7EmNOvsPmchBDbgR8Bu81DLwCfx/7zugH4v0AUuBX4AwXOqaojeiHEVcAm\nKeVLgfcDX6nwkPJGCNEA/CvGB8ziM8AdUsorgYPA+yoxtnwRQrwC2Gb+ff4I+DI2nxNwLfC0lPIq\n4G3AP2P/OVl8Ahgzb9fKnH4rpdxu/vswNp+XEKId+CRwBfAG4E0UYU5VLfTA1cD/Akgp9wKtQoim\nyg4pb0LA64DTSce2A/eZt+8HrinzmArld8D15u0JoAGbz0lK+QMp5efNH9cAJ7H5nACEEGcBW4Cf\nmYe2Y/M5pWE79p7XNcAOKeW0lLJfSnkzRZhTtVs3PcCupJ+HzWNTlRlO/kgpo0BUCJF8uCHpEmwI\n6C37wApAShkDZs0f3w/8HHiNnedkIYT4PbAaI6raUQNz+hLwF8B7zJ9t/d5LYosQ4j6gDfg09p/X\nmYDPnFMr8CmKMKdqj+gXo1V6ACXEtnMTQrwJQ+j/YtFdtp2TlPJlwBuBu1k4D9vNSQjxbuBxKeWR\nNKfYbk4mBzDE/U0YX2DfZmHwasd5aUA78BbgvcB3KML7r9qF/jRGBG+xCmMxolaYMRfIAPpYaOvY\nAiHEa4C/A14rpZzE5nMSQlxkLpIjpXwOQzim7Twn4PXAm4QQTwB/Cvw9Nv87AUgpT5lWmy6lPAQM\nYNi7dp7XIPB7KWXUnNM0RXj/VbvQPwS8FUAIcSFwWko5XdkhFZUdwHXm7euAByo4lpwRQjQDXwDe\nIKW0FvlsPSfg5cBfAwghuoFGbD4nKeXbpZSXSCkvA76FkXVj6zmBkZ0ihPgb83YPRqbUd7D3vB4C\nXimEcJgLs0V5/1V9mWIhxD9ifPjiwIeklM9XeEh5IYS4CMMnPROIAKeAGzBS+eqBY8BNUspIhYaY\nM0KImzE8xP1Jh9+DISZ2nZMXwwJYA3gxrIGnge9h0zklI4T4FHAUeBCbz0kI4Qf+C2gBPBh/q2ex\n/7z+DMMKBbgNI2W5oDlVvdArFAqFojCq3bpRKBQKRYEooVcoFIoaRwm9QqFQ1DhK6BUKhaLGUUKv\nUCgUNY4SesWKRAjxGyFEyeqgCCHOF0L8a4rjG4UQR0v1ugpFKqq91o1CYUvMXbUfrvQ4FApQQq9Y\nAQghVgH/iVEnxAt8w7zraiHELcBm4NNSyrvN3bDfxtiRWAd8Xkr5E3Oj0XqgA6Oo1K+llH+d4TW3\nA7dJKa8QQrwM+DpGUb5d6R6jUJQKZd0oVgJvB/ZJKbcDVwE+87gmpXw9cBPwt+axz2DWOMcolvVv\n5g5MgG0Yhc4uxagdc26Wr/9F4G+llFdj1GNRKMqKEnrFSuAXwDVCiDsxGotYEf1vzP9PYmyjB0PE\nfwkgpRwy77NqS//aLDYVxiiLsCXL1z8HeNR6jvymoFDkjxJ6Rc0jpdyHIcp3YzRt+I15VzTpNKv8\n6+KaIFrSMUea48uhYdRqAqMdnEJRVpTQK2oeIcS7gEuklDuA/w9YS/r1qSeA15iPW4Xhx0vzvpcL\nIZz/r707NkEohqIw/BeCo9wJLB44iBM4gpVgKTbiGFaWtmrnBA9u4xQOYGEKLYSnjb74f1UgTapD\nCJeciBgCI+5dnl20QFPWfWs8UgUMev2DFlhHxAk4ACueb/OPFsA4Io7ADphm5rXsXbiXUZ+Bbam3\n7GIGbCJiD/S1ClM95u+VUgdl6maQmfNvn0V6l+OV0ociogGWL7YnmemEjX6CN3pJqpxv9JJUOYNe\nkipn0EtS5Qx6SaqcQS9JlbsBZjuQL0k6qhMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "g.loc[33].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "F1w0G9Z2ymfW",
    "outputId": "d5760e11-8a36-4491-aa69-688cdcbae3c3"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(14, 0.23333333333333334)"
      ]
     },
     "execution_count": 25,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "shop_last = np.unique(g.loc[31:].reset_index().shop_id.values)\n",
    "shop_all = np.unique(g.reset_index().shop_id.values)\n",
    "n_shop_closed = len(list(set(shop_all) - set(shop_last)))\n",
    "n_shop_closed, n_shop_closed / len(shop_all)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 195
    },
    "colab_type": "code",
    "id": "0YnYmjDcb5_h",
    "outputId": "bc73a825-02bc-4cea-9b37-6ec8f0264b33"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>date_block_num</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_price</th>\n",
       "      <th>item_cnt_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>02.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>59</td>\n",
       "      <td>22154</td>\n",
       "      <td>999.00</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>03.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>25</td>\n",
       "      <td>2552</td>\n",
       "      <td>899.00</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>05.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>25</td>\n",
       "      <td>2552</td>\n",
       "      <td>899.00</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>06.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>25</td>\n",
       "      <td>2554</td>\n",
       "      <td>1709.05</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>15.01.2013</td>\n",
       "      <td>0</td>\n",
       "      <td>25</td>\n",
       "      <td>2555</td>\n",
       "      <td>1099.00</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         date  date_block_num  shop_id  item_id  item_price  item_cnt_day\n",
       "0  02.01.2013               0       59    22154      999.00           1.0\n",
       "1  03.01.2013               0       25     2552      899.00           1.0\n",
       "2  05.01.2013               0       25     2552      899.00          -1.0\n",
       "3  06.01.2013               0       25     2554     1709.05           1.0\n",
       "4  15.01.2013               0       25     2555     1099.00           1.0"
      ]
     },
     "execution_count": 6,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1823
    },
    "colab_type": "code",
    "id": "4Y8nx17Rgxvw",
    "outputId": "ab6e5ba5-3fd5-4e48-a534-3a14283d4f78"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>shop_name</th>\n",
       "      <th>shop_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>!Якутск Орджоникидзе, 56 фран</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>!Якутск ТЦ \"Центральный\" фран</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Адыгея ТЦ \"Мега\"</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Балашиха ТРК \"Октябрь-Киномир\"</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Волжский ТЦ \"Волга Молл\"</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Вологда ТРЦ \"Мармелад\"</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Воронеж (Плехановская, 13)</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Воронеж ТРЦ \"Максимир\"</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Воронеж ТРЦ Сити-Парк \"Град\"</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Выездная Торговля</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>Жуковский ул. Чкалова 39м?</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>Жуковский ул. Чкалова 39м²</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>Интернет-магазин ЧС</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>Казань ТЦ \"Бехетле\"</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>Казань ТЦ \"ПаркХаус\" II</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>Калуга ТРЦ \"XXI век\"</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>Коломна ТЦ \"Рио\"</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>Красноярск ТЦ \"Взлетка Плаза\"</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>Красноярск ТЦ \"Июнь\"</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>Курск ТЦ \"Пушкинский\"</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>Москва \"Распродажа\"</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>Москва МТРЦ \"Афи Молл\"</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>Москва Магазин С21</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>Москва ТК \"Буденовский\" (пав.А2)</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>Москва ТК \"Буденовский\" (пав.К7)</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>Москва ТРК \"Атриум\"</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>Москва ТЦ \"Ареал\" (Беляево)</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>Москва ТЦ \"МЕГА Белая Дача II\"</td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>Москва ТЦ \"МЕГА Теплый Стан\" II</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>Москва ТЦ \"Новый век\" (Новокосино)</td>\n",
       "      <td>29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>Москва ТЦ \"Перловский\"</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>Москва ТЦ \"Семеновский\"</td>\n",
       "      <td>31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>Москва ТЦ \"Серебряный Дом\"</td>\n",
       "      <td>32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>Мытищи ТРК \"XL-3\"</td>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>Н.Новгород ТРЦ \"РИО\"</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>Н.Новгород ТРЦ \"Фантастика\"</td>\n",
       "      <td>35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>Новосибирск ТРЦ \"Галерея Новосибирск\"</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>Новосибирск ТЦ \"Мега\"</td>\n",
       "      <td>37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>Омск ТЦ \"Мега\"</td>\n",
       "      <td>38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>РостовНаДону ТРК \"Мегацентр Горизонт\"</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>РостовНаДону ТРК \"Мегацентр Горизонт\" Островной</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>РостовНаДону ТЦ \"Мега\"</td>\n",
       "      <td>41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>СПб ТК \"Невский Центр\"</td>\n",
       "      <td>42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>СПб ТК \"Сенная\"</td>\n",
       "      <td>43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>Самара ТЦ \"Мелодия\"</td>\n",
       "      <td>44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>Самара ТЦ \"ПаркХаус\"</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>Сергиев Посад ТЦ \"7Я\"</td>\n",
       "      <td>46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>Сургут ТРЦ \"Сити Молл\"</td>\n",
       "      <td>47</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>Томск ТРЦ \"Изумрудный Город\"</td>\n",
       "      <td>48</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>Тюмень ТРЦ \"Кристалл\"</td>\n",
       "      <td>49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>Тюмень ТЦ \"Гудвин\"</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>Тюмень ТЦ \"Зеленый Берег\"</td>\n",
       "      <td>51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>Уфа ТК \"Центральный\"</td>\n",
       "      <td>52</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>Уфа ТЦ \"Семья\" 2</td>\n",
       "      <td>53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>Химки ТЦ \"Мега\"</td>\n",
       "      <td>54</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>Цифровой склад 1С-Онлайн</td>\n",
       "      <td>55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56</th>\n",
       "      <td>Чехов ТРЦ \"Карнавал\"</td>\n",
       "      <td>56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57</th>\n",
       "      <td>Якутск Орджоникидзе, 56</td>\n",
       "      <td>57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>58</th>\n",
       "      <td>Якутск ТЦ \"Центральный\"</td>\n",
       "      <td>58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>Ярославль ТЦ \"Альтаир\"</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                          shop_name  shop_id\n",
       "0                     !Якутск Орджоникидзе, 56 фран        0\n",
       "1                     !Якутск ТЦ \"Центральный\" фран        1\n",
       "2                                  Адыгея ТЦ \"Мега\"        2\n",
       "3                    Балашиха ТРК \"Октябрь-Киномир\"        3\n",
       "4                          Волжский ТЦ \"Волга Молл\"        4\n",
       "5                            Вологда ТРЦ \"Мармелад\"        5\n",
       "6                        Воронеж (Плехановская, 13)        6\n",
       "7                            Воронеж ТРЦ \"Максимир\"        7\n",
       "8                      Воронеж ТРЦ Сити-Парк \"Град\"        8\n",
       "9                                 Выездная Торговля        9\n",
       "10                       Жуковский ул. Чкалова 39м?       10\n",
       "11                       Жуковский ул. Чкалова 39м²       11\n",
       "12                              Интернет-магазин ЧС       12\n",
       "13                              Казань ТЦ \"Бехетле\"       13\n",
       "14                          Казань ТЦ \"ПаркХаус\" II       14\n",
       "15                             Калуга ТРЦ \"XXI век\"       15\n",
       "16                                 Коломна ТЦ \"Рио\"       16\n",
       "17                    Красноярск ТЦ \"Взлетка Плаза\"       17\n",
       "18                             Красноярск ТЦ \"Июнь\"       18\n",
       "19                            Курск ТЦ \"Пушкинский\"       19\n",
       "20                              Москва \"Распродажа\"       20\n",
       "21                           Москва МТРЦ \"Афи Молл\"       21\n",
       "22                               Москва Магазин С21       22\n",
       "23                 Москва ТК \"Буденовский\" (пав.А2)       23\n",
       "24                 Москва ТК \"Буденовский\" (пав.К7)       24\n",
       "25                              Москва ТРК \"Атриум\"       25\n",
       "26                      Москва ТЦ \"Ареал\" (Беляево)       26\n",
       "27                   Москва ТЦ \"МЕГА Белая Дача II\"       27\n",
       "28                  Москва ТЦ \"МЕГА Теплый Стан\" II       28\n",
       "29               Москва ТЦ \"Новый век\" (Новокосино)       29\n",
       "30                           Москва ТЦ \"Перловский\"       30\n",
       "31                          Москва ТЦ \"Семеновский\"       31\n",
       "32                       Москва ТЦ \"Серебряный Дом\"       32\n",
       "33                                Мытищи ТРК \"XL-3\"       33\n",
       "34                             Н.Новгород ТРЦ \"РИО\"       34\n",
       "35                      Н.Новгород ТРЦ \"Фантастика\"       35\n",
       "36            Новосибирск ТРЦ \"Галерея Новосибирск\"       36\n",
       "37                            Новосибирск ТЦ \"Мега\"       37\n",
       "38                                   Омск ТЦ \"Мега\"       38\n",
       "39            РостовНаДону ТРК \"Мегацентр Горизонт\"       39\n",
       "40  РостовНаДону ТРК \"Мегацентр Горизонт\" Островной       40\n",
       "41                           РостовНаДону ТЦ \"Мега\"       41\n",
       "42                           СПб ТК \"Невский Центр\"       42\n",
       "43                                  СПб ТК \"Сенная\"       43\n",
       "44                              Самара ТЦ \"Мелодия\"       44\n",
       "45                             Самара ТЦ \"ПаркХаус\"       45\n",
       "46                            Сергиев Посад ТЦ \"7Я\"       46\n",
       "47                           Сургут ТРЦ \"Сити Молл\"       47\n",
       "48                     Томск ТРЦ \"Изумрудный Город\"       48\n",
       "49                            Тюмень ТРЦ \"Кристалл\"       49\n",
       "50                               Тюмень ТЦ \"Гудвин\"       50\n",
       "51                        Тюмень ТЦ \"Зеленый Берег\"       51\n",
       "52                             Уфа ТК \"Центральный\"       52\n",
       "53                                 Уфа ТЦ \"Семья\" 2       53\n",
       "54                                  Химки ТЦ \"Мега\"       54\n",
       "55                         Цифровой склад 1С-Онлайн       55\n",
       "56                             Чехов ТРЦ \"Карнавал\"       56\n",
       "57                          Якутск Орджоникидзе, 56       57\n",
       "58                          Якутск ТЦ \"Центральный\"       58\n",
       "59                           Ярославль ТЦ \"Альтаир\"       59"
      ]
     },
     "execution_count": 7,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "shops = pd.read_csv(PATH/'shops.csv', low_memory=False)\n",
    "shops"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 195
    },
    "colab_type": "code",
    "id": "AtAg5Ea41Jm6",
    "outputId": "00c38df6-4cd2-4d6c-f5d6-3c5ed8cfdd69"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>shop_name</th>\n",
       "      <th>shop_id</th>\n",
       "      <th>city</th>\n",
       "      <th>shop_type</th>\n",
       "      <th>city_code</th>\n",
       "      <th>shop_type_code</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>!Якутск Орджоникидзе, 56 фран</td>\n",
       "      <td>0</td>\n",
       "      <td>Якутск</td>\n",
       "      <td>other</td>\n",
       "      <td>29</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>!Якутск ТЦ \"Центральный\" фран</td>\n",
       "      <td>1</td>\n",
       "      <td>Якутск</td>\n",
       "      <td>ТЦ</td>\n",
       "      <td>29</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Адыгея ТЦ \"Мега\"</td>\n",
       "      <td>2</td>\n",
       "      <td>Адыгея</td>\n",
       "      <td>ТЦ</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Балашиха ТРК \"Октябрь-Киномир\"</td>\n",
       "      <td>3</td>\n",
       "      <td>Балашиха</td>\n",
       "      <td>ТРК</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Волжский ТЦ \"Волга Молл\"</td>\n",
       "      <td>4</td>\n",
       "      <td>Волжский</td>\n",
       "      <td>ТЦ</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                        shop_name  shop_id      city shop_type  city_code  \\\n",
       "0   !Якутск Орджоникидзе, 56 фран        0    Якутск     other         29   \n",
       "1   !Якутск ТЦ \"Центральный\" фран        1    Якутск        ТЦ         29   \n",
       "2                Адыгея ТЦ \"Мега\"        2    Адыгея        ТЦ          0   \n",
       "3  Балашиха ТРК \"Октябрь-Киномир\"        3  Балашиха       ТРК          1   \n",
       "4        Волжский ТЦ \"Волга Молл\"        4  Волжский        ТЦ          2   \n",
       "\n",
       "   shop_type_code  \n",
       "0               0  \n",
       "1               5  \n",
       "2               5  \n",
       "3               3  \n",
       "4               5  "
      ]
     },
     "execution_count": 8,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Якутск Орджоникидзе, 56\n",
    "train.loc[train.shop_id == 0, 'shop_id'] = 57\n",
    "# Якутск ТЦ \"Центральный\"\n",
    "train.loc[train.shop_id == 1, 'shop_id'] = 58\n",
    "# Жуковский ул. Чкалова 39м²\n",
    "train.loc[train.shop_id == 10, 'shop_id'] = 11\n",
    "train.loc[train.shop_id == 39, 'shop_id'] = 40\n",
    "shops.loc[shops.shop_name == 'Сергиев Посад ТЦ \"7Я\"', 'shop_name'] = 'СергиевПосад ТЦ \"7Я\"'\n",
    "shops.loc[shops.shop_name == 'Цифровой склад 1С-Онлайн', 'shop_name'] = 'Цифровойсклад 1С-Онлайн'\n",
    "shops['city'] = shops.shop_name.str.split(' ').map(lambda x: x[0])\n",
    "shops.loc[shops.city == '!Якутск', 'city'] = 'Якутск'\n",
    "shops['shop_type'] = shops.shop_name.str.split(' ')\\\n",
    "          .map(lambda x: 'ТЦ' if 'ТЦ' == x[1] else  'ТРЦ' if 'ТРЦ' == x[1] else\n",
    "           'ТК' if 'ТК' == x[1] else 'ТРК' if 'ТРК' == x[1] else 'МТРЦ' if 'МТРЦ' == x[1] else 'other')\n",
    "shops['city_code'] = LabelEncoder().fit_transform(shops['city']).astype(np.int8)\n",
    "# shops['city_code'] = shops['city_code'].astype(np.int8)\n",
    "shops['shop_type_code'] = LabelEncoder().fit_transform(shops['shop_type']).astype(np.int8)\n",
    "# shops['shop_type_code'] = shops['shop_type_code'].astype(np.int8)\n",
    "shops.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 195
    },
    "colab_type": "code",
    "id": "SYGBnhcbjeGI",
    "outputId": "8d09926a-ffbb-4bcc-dff2-74e1ce523724"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_name</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_category_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>! ВО ВЛАСТИ НАВАЖДЕНИЯ (ПЛАСТ.)         D</td>\n",
       "      <td>0</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>!ABBYY FineReader 12 Professional Edition Full...</td>\n",
       "      <td>1</td>\n",
       "      <td>76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>***В ЛУЧАХ СЛАВЫ   (UNV)                    D</td>\n",
       "      <td>2</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>***ГОЛУБАЯ ВОЛНА  (Univ)                      D</td>\n",
       "      <td>3</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>***КОРОБКА (СТЕКЛО)                       D</td>\n",
       "      <td>4</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                           item_name  item_id  \\\n",
       "0          ! ВО ВЛАСТИ НАВАЖДЕНИЯ (ПЛАСТ.)         D        0   \n",
       "1  !ABBYY FineReader 12 Professional Edition Full...        1   \n",
       "2      ***В ЛУЧАХ СЛАВЫ   (UNV)                    D        2   \n",
       "3    ***ГОЛУБАЯ ВОЛНА  (Univ)                      D        3   \n",
       "4        ***КОРОБКА (СТЕКЛО)                       D        4   \n",
       "\n",
       "   item_category_id  \n",
       "0                40  \n",
       "1                76  \n",
       "2                40  \n",
       "3                40  \n",
       "4                40  "
      ]
     },
     "execution_count": 10,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "items = pd.read_csv(PATH/'items.csv', low_memory=False)\n",
    "items.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1058
    },
    "colab_type": "code",
    "id": "tdGcwWUF1J6b",
    "outputId": "cab195c0-2161-4819-c3c4-d15d7836df3e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0                ! ВО ВЛАСТИ НАВАЖДЕНИЯ (ПЛАСТ.)         D\n",
       "2            ***В ЛУЧАХ СЛАВЫ   (UNV)                    D\n",
       "3          ***ГОЛУБАЯ ВОЛНА  (Univ)                      D\n",
       "4              ***КОРОБКА (СТЕКЛО)                       D\n",
       "5        ***НОВЫЕ АМЕРИКАНСКИЕ ГРАФФИТИ  (UNI)         ...\n",
       "6                 ***УДАР ПО ВОРОТАМ (UNI)               D\n",
       "7               ***УДАР ПО ВОРОТАМ-2 (UNI)               D\n",
       "8                 ***ЧАЙ С МУССОЛИНИ                     D\n",
       "9            ***ШУГАРЛЭНДСКИЙ ЭКСПРЕСС (UNI)             D\n",
       "10               *ЗА ГРАНЬЮ СМЕРТИ                       D\n",
       "11               *ЛИНИЯ СМЕРТИ                           D\n",
       "13               *СПАСАЯ ЭМИЛИ                           D\n",
       "14               *ЧОКНУТЫЙ ПРОФЕССОР /МАГИЯ/             D\n",
       "15                  //АДРЕНАЛИН: ОДИН ПРОТИВ ВСЕХ (Регион)\n",
       "16                              //МОНГОЛ С.Бодров (Регион)\n",
       "17                         //НЕ ОСТАВЛЯЮЩИЙ СЛЕДА (Регион)\n",
       "18               /БОМБА ДЛЯ НЕВЕСТЫ /2DVD/               D\n",
       "19                               /ЗОЛОТАЯ КОЛЛЕКЦИЯ м/ф-72\n",
       "20                                      /ОДНАЖДЫ В КИТАЕ-2\n",
       "21                                         /ПОСЛЕДНИЙ ШАНС\n",
       "22                                    /ПРОКЛЯТЬЕ ЭЛЬ ЧАРРО\n",
       "23                                       /СЕВЕР И ЮГ /Ч.2/\n",
       "24                                    /СМЕРТЕЛЬНЫЙ РАСКЛАД\n",
       "25                                             /ТЫ  - ТРУП\n",
       "26                        /УМНОЖАЮЩИЙ ПЕЧАЛЬ т.2 (сер.3-4)\n",
       "30                              007: КООРДИНАТЫ «СКАЙФОЛЛ»\n",
       "32                                                     1+1\n",
       "34                     10 000 ЛЕТ ДО НАШЕЙ ЭРЫ WB (регион)\n",
       "35                                           10 ЛЕТ СПУСТЯ\n",
       "37                                  10 ЛЕТ СПУСТЯ (регион)\n",
       "                               ...                        \n",
       "22116                                     Я И МОНИКА ВЕЛЮР\n",
       "22119               Я НЕ ЗНАЮ, КАК ОНА ДЕЛАЕТ ЭТО (регион)\n",
       "22120                       Я НОРМАЛЬНО СУПЕР ГУД (регион)\n",
       "22121                                    Я ОЧЕНЬ ВОЗБУЖДЕН\n",
       "22123                           Я ОЧЕНЬ ВОЗБУЖДЕН (регион)\n",
       "22124                                Я ПЛЮЮ НА ВАШИ МОГИЛЫ\n",
       "22126                              Я ПЛЮЮ НА ВАШИ МОГИЛЫ 2\n",
       "22128                                       Я СЭМ (регион)\n",
       "22129                                               Я ТОЖЕ\n",
       "22130                                          Я ТОЖЕ ХОЧУ\n",
       "22132                                 Я ТОЖЕ ХОЧУ (регион)\n",
       "22133                           Я ШАГАЮ ПО МОСКВЕ (регион)\n",
       "22134                                       Я, АЛЕКС КРОСС\n",
       "22136                              Я, АЛЕКС КРОСС (регион)\n",
       "22137                                             Я, РОБОТ\n",
       "22138                          Я, РОБОТ (2DVD+BD) жел.бокс\n",
       "22141                                    Я, СНОВА Я И МАМА\n",
       "22143                                      Я, ФРАНКЕНШТЕЙН\n",
       "22147                                Я-ЛЕГЕНДА WB (регион)\n",
       "22148                                      Я-ЧЕТВЕРТЫЙ  WD\n",
       "22149                             Я-ЧЕТВЕРТЫЙ  WD (регион)\n",
       "22151                                       ЯВЛЕНИЕ (2012)\n",
       "22152                              ЯВЛЕНИЕ (2012) (регион)\n",
       "22156       ЯДЫ, ИЛИ ВСЕМИРНАЯ ИСТОРИЯ ОТРАВЛЕНИЙ (регион)\n",
       "22157                                              ЯЛТА 45\n",
       "22158                                            ЯМА (rem)\n",
       "22159                                            ЯНКОВСКИЙ\n",
       "22160                           ЯРМАРКА ТЩЕСЛАВИЯ (Регион)\n",
       "22162                                               ЯРОСТЬ\n",
       "22163                                     ЯРОСТЬ ( регион)\n",
       "Name: item_name, Length: 5035, dtype: object"
      ]
     },
     "execution_count": 32,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "items.loc[items.item_category_id == 40, 'item_name']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 77
    },
    "colab_type": "code",
    "id": "oYSZi2u8HtqH",
    "outputId": "48b71c7c-1a93-4be2-d22a-6d069260437e"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_category_name</th>\n",
       "      <th>item_category_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>Кино - DVD</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   item_category_name  item_category_id\n",
       "40         Кино - DVD                40"
      ]
     },
     "execution_count": 11,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cats = pd.read_csv(PATH/'item_categories.csv', low_memory=False)\n",
    "cats[cats.item_category_id == 40]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1882
    },
    "colab_type": "code",
    "id": "XsUgAFmHmyBG",
    "outputId": "98abb5df-6ac2-49c3-e3f6-56e8ac4aea73"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_name</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_category_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>133</th>\n",
       "      <td>1С:Аудиокниги. 25 знаменитых сказок</td>\n",
       "      <td>133</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>134</th>\n",
       "      <td>1С:Аудиокниги. Around the World in 80 days (by...</td>\n",
       "      <td>134</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>135</th>\n",
       "      <td>1С:Аудиокниги. Classical Mosaic. English Stori...</td>\n",
       "      <td>135</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>136</th>\n",
       "      <td>1С:Аудиокниги. Happy New English! (Best funny ...</td>\n",
       "      <td>136</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>138</th>\n",
       "      <td>1С:Аудиокниги. А. Некрасов. Приключения капита...</td>\n",
       "      <td>138</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>139</th>\n",
       "      <td>1С:Аудиокниги. А.М. Волков. Волшебник изумрудн...</td>\n",
       "      <td>139</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>140</th>\n",
       "      <td>1С:Аудиокниги. Аладдин и другие восточные сказ...</td>\n",
       "      <td>140</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142</th>\n",
       "      <td>1С:Аудиокниги. Алексей Толстой. Приключения Бу...</td>\n",
       "      <td>142</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>143</th>\n",
       "      <td>1С:Аудиокниги. Аленький цветочек и другие сказ...</td>\n",
       "      <td>143</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>149</th>\n",
       "      <td>1С:Аудиокниги. Английский для детей. Слушай и ...</td>\n",
       "      <td>149</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>151</th>\n",
       "      <td>1С:Аудиокниги. Английский для малышей. Наглядн...</td>\n",
       "      <td>151</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>152</th>\n",
       "      <td>1С:Аудиокниги. Английский для путешественников...</td>\n",
       "      <td>152</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>153</th>\n",
       "      <td>1С:Аудиокниги. Английский за 30 минут (Digipack)</td>\n",
       "      <td>153</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>154</th>\n",
       "      <td>1С:Аудиокниги. Английский за рулем. Выпуск 1 (...</td>\n",
       "      <td>154</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>155</th>\n",
       "      <td>1С:Аудиокниги. Английский за рулем. Выпуск 2 (...</td>\n",
       "      <td>155</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>156</th>\n",
       "      <td>1С:Аудиокниги. Английский за рулем. Выпуск 3 (...</td>\n",
       "      <td>156</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>162</th>\n",
       "      <td>1С:Аудиокниги. Андерсен Г.Х. Дюймовочка</td>\n",
       "      <td>162</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>165</th>\n",
       "      <td>1С:Аудиокниги. Артур Конан Дойл. Долина страха...</td>\n",
       "      <td>165</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>166</th>\n",
       "      <td>1С:Аудиокниги. Артур Конан Дойл. Истории о Шер...</td>\n",
       "      <td>166</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>170</th>\n",
       "      <td>1С:Аудиокниги. Аудиокурсы. Учимся правильно и ...</td>\n",
       "      <td>170</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>171</th>\n",
       "      <td>1С:Аудиокниги. Аудиоэкскурсия. Московский Кремль</td>\n",
       "      <td>171</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>172</th>\n",
       "      <td>1С:Аудиокниги. Аудиоэкскурсия. Невский проспект</td>\n",
       "      <td>172</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>173</th>\n",
       "      <td>1С:Аудиокниги. Аудиоэнциклопедия для самых мал...</td>\n",
       "      <td>173</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>175</th>\n",
       "      <td>1С:Аудиокниги. Большая поэзия для маленьких де...</td>\n",
       "      <td>175</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>176</th>\n",
       "      <td>1С:Аудиокниги. Булгаков М. Собачье сердце</td>\n",
       "      <td>176</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>177</th>\n",
       "      <td>1С:Аудиокниги. Булгаков М.А. Мастер и Маргарита</td>\n",
       "      <td>177</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>178</th>\n",
       "      <td>1С:Аудиокниги. Булгаков М.А. Ханский огонь</td>\n",
       "      <td>178</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>179</th>\n",
       "      <td>1С:Аудиокниги. Бунин И. А. Грехи любви</td>\n",
       "      <td>179</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>197</th>\n",
       "      <td>1С:Аудиокниги. Великие бизнесмены или как дела...</td>\n",
       "      <td>197</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>198</th>\n",
       "      <td>1С:Аудиокниги. Верн Ж. 20 000 лье под водой</td>\n",
       "      <td>198</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>428</th>\n",
       "      <td>1С:Аудиотеатр. Истории о смелых и находчивых. ...</td>\n",
       "      <td>428</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>429</th>\n",
       "      <td>1С:Аудиотеатр. Коллекция аудиоспектаклей по пр...</td>\n",
       "      <td>429</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>430</th>\n",
       "      <td>1С:Аудиотеатр. Коллекция сказок А. Усачева (Di...</td>\n",
       "      <td>430</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>431</th>\n",
       "      <td>1С:Аудиотеатр. Коллекция сказок В. Гауфа. (Dig...</td>\n",
       "      <td>431</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>432</th>\n",
       "      <td>1С:Аудиотеатр. Коллекция сказок Салтыкова-Щедр...</td>\n",
       "      <td>432</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>433</th>\n",
       "      <td>1С:Аудиотеатр. Коллекция сказок Ш. Перро (Digi...</td>\n",
       "      <td>433</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>435</th>\n",
       "      <td>1С:Аудиотеатр. Лагин Л. Старик Хоттабыч (в гла...</td>\n",
       "      <td>435</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>436</th>\n",
       "      <td>1С:Аудиотеатр. Лермонтов М.Ю. Герой нашего вре...</td>\n",
       "      <td>436</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>438</th>\n",
       "      <td>1С:Аудиотеатр. Лучшие произведения русских пис...</td>\n",
       "      <td>438</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>439</th>\n",
       "      <td>1С:Аудиотеатр. Лучшие сказки великих сказочник...</td>\n",
       "      <td>439</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>440</th>\n",
       "      <td>1С:Аудиотеатр. М.Ю. Лермонтов. Маскарад Digipack</td>\n",
       "      <td>440</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>441</th>\n",
       "      <td>1С:Аудиотеатр. Мастера русской сатиры 19 века....</td>\n",
       "      <td>441</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>442</th>\n",
       "      <td>1С:Аудиотеатр. Мольер Ж. Тартюф (Jewel)</td>\n",
       "      <td>442</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>443</th>\n",
       "      <td>1С:Аудиотеатр. Мудрые сказки. Аудиоспектакли д...</td>\n",
       "      <td>443</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>444</th>\n",
       "      <td>1С:Аудиотеатр. Олег Кургузов. Истории и расска...</td>\n",
       "      <td>444</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>445</th>\n",
       "      <td>1С:Аудиотеатр. Полезные загадки. (Digipack)</td>\n",
       "      <td>445</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>448</th>\n",
       "      <td>1С:Аудиотеатр. Пушкин А.С. Евгений Онегин (с у...</td>\n",
       "      <td>448</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>449</th>\n",
       "      <td>1С:Аудиотеатр. Русские писатели конца 19 - нач...</td>\n",
       "      <td>449</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>450</th>\n",
       "      <td>1С:Аудиотеатр. Сказки Евгения Шварца. Аудиоспе...</td>\n",
       "      <td>450</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>451</th>\n",
       "      <td>1С:Аудиотеатр. Сказки Кота-Мурлыки (Jewel)</td>\n",
       "      <td>451</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>453</th>\n",
       "      <td>1С:Аудиотеатр. Сказки для маленьких принцесс (...</td>\n",
       "      <td>453</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>454</th>\n",
       "      <td>1С:Аудиотеатр. Сказки для мальчиков (Digipack)</td>\n",
       "      <td>454</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>456</th>\n",
       "      <td>1С:Аудиотеатр. Сказки и истории из разных угол...</td>\n",
       "      <td>456</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>457</th>\n",
       "      <td>1С:Аудиотеатр. Старые добрые сказки. Аудиоспек...</td>\n",
       "      <td>457</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>458</th>\n",
       "      <td>1С:Аудиотеатр. Толстой Л. «Крейцерова соната» ...</td>\n",
       "      <td>458</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>459</th>\n",
       "      <td>1С:Аудиотеатр. Уильям Шекспир. Комедия ошибок ...</td>\n",
       "      <td>459</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>460</th>\n",
       "      <td>1С:Аудиотеатр. Ф.М. Достоевский. Братья Карама...</td>\n",
       "      <td>460</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>461</th>\n",
       "      <td>1С:Аудиотеатр. Ф.М. Достоевский. Идиот. (Digip...</td>\n",
       "      <td>461</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>462</th>\n",
       "      <td>1С:Аудиотеатр. Хрестоматия по литературе. 1 кл...</td>\n",
       "      <td>462</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13514</th>\n",
       "      <td>Комплект «Подарок от Деда мороза»</td>\n",
       "      <td>13514</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>195 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                               item_name  item_id  \\\n",
       "133                  1С:Аудиокниги. 25 знаменитых сказок      133   \n",
       "134    1С:Аудиокниги. Around the World in 80 days (by...      134   \n",
       "135    1С:Аудиокниги. Classical Mosaic. English Stori...      135   \n",
       "136    1С:Аудиокниги. Happy New English! (Best funny ...      136   \n",
       "138    1С:Аудиокниги. А. Некрасов. Приключения капита...      138   \n",
       "139    1С:Аудиокниги. А.М. Волков. Волшебник изумрудн...      139   \n",
       "140    1С:Аудиокниги. Аладдин и другие восточные сказ...      140   \n",
       "142    1С:Аудиокниги. Алексей Толстой. Приключения Бу...      142   \n",
       "143    1С:Аудиокниги. Аленький цветочек и другие сказ...      143   \n",
       "149    1С:Аудиокниги. Английский для детей. Слушай и ...      149   \n",
       "151    1С:Аудиокниги. Английский для малышей. Наглядн...      151   \n",
       "152    1С:Аудиокниги. Английский для путешественников...      152   \n",
       "153     1С:Аудиокниги. Английский за 30 минут (Digipack)      153   \n",
       "154    1С:Аудиокниги. Английский за рулем. Выпуск 1 (...      154   \n",
       "155    1С:Аудиокниги. Английский за рулем. Выпуск 2 (...      155   \n",
       "156    1С:Аудиокниги. Английский за рулем. Выпуск 3 (...      156   \n",
       "162              1С:Аудиокниги. Андерсен Г.Х. Дюймовочка      162   \n",
       "165    1С:Аудиокниги. Артур Конан Дойл. Долина страха...      165   \n",
       "166    1С:Аудиокниги. Артур Конан Дойл. Истории о Шер...      166   \n",
       "170    1С:Аудиокниги. Аудиокурсы. Учимся правильно и ...      170   \n",
       "171     1С:Аудиокниги. Аудиоэкскурсия. Московский Кремль      171   \n",
       "172      1С:Аудиокниги. Аудиоэкскурсия. Невский проспект      172   \n",
       "173    1С:Аудиокниги. Аудиоэнциклопедия для самых мал...      173   \n",
       "175    1С:Аудиокниги. Большая поэзия для маленьких де...      175   \n",
       "176            1С:Аудиокниги. Булгаков М. Собачье сердце      176   \n",
       "177      1С:Аудиокниги. Булгаков М.А. Мастер и Маргарита      177   \n",
       "178           1С:Аудиокниги. Булгаков М.А. Ханский огонь      178   \n",
       "179               1С:Аудиокниги. Бунин И. А. Грехи любви      179   \n",
       "197    1С:Аудиокниги. Великие бизнесмены или как дела...      197   \n",
       "198          1С:Аудиокниги. Верн Ж. 20 000 лье под водой      198   \n",
       "...                                                  ...      ...   \n",
       "428    1С:Аудиотеатр. Истории о смелых и находчивых. ...      428   \n",
       "429    1С:Аудиотеатр. Коллекция аудиоспектаклей по пр...      429   \n",
       "430    1С:Аудиотеатр. Коллекция сказок А. Усачева (Di...      430   \n",
       "431    1С:Аудиотеатр. Коллекция сказок В. Гауфа. (Dig...      431   \n",
       "432    1С:Аудиотеатр. Коллекция сказок Салтыкова-Щедр...      432   \n",
       "433    1С:Аудиотеатр. Коллекция сказок Ш. Перро (Digi...      433   \n",
       "435    1С:Аудиотеатр. Лагин Л. Старик Хоттабыч (в гла...      435   \n",
       "436    1С:Аудиотеатр. Лермонтов М.Ю. Герой нашего вре...      436   \n",
       "438    1С:Аудиотеатр. Лучшие произведения русских пис...      438   \n",
       "439    1С:Аудиотеатр. Лучшие сказки великих сказочник...      439   \n",
       "440     1С:Аудиотеатр. М.Ю. Лермонтов. Маскарад Digipack      440   \n",
       "441    1С:Аудиотеатр. Мастера русской сатиры 19 века....      441   \n",
       "442              1С:Аудиотеатр. Мольер Ж. Тартюф (Jewel)      442   \n",
       "443    1С:Аудиотеатр. Мудрые сказки. Аудиоспектакли д...      443   \n",
       "444    1С:Аудиотеатр. Олег Кургузов. Истории и расска...      444   \n",
       "445          1С:Аудиотеатр. Полезные загадки. (Digipack)      445   \n",
       "448    1С:Аудиотеатр. Пушкин А.С. Евгений Онегин (с у...      448   \n",
       "449    1С:Аудиотеатр. Русские писатели конца 19 - нач...      449   \n",
       "450    1С:Аудиотеатр. Сказки Евгения Шварца. Аудиоспе...      450   \n",
       "451           1С:Аудиотеатр. Сказки Кота-Мурлыки (Jewel)      451   \n",
       "453    1С:Аудиотеатр. Сказки для маленьких принцесс (...      453   \n",
       "454       1С:Аудиотеатр. Сказки для мальчиков (Digipack)      454   \n",
       "456    1С:Аудиотеатр. Сказки и истории из разных угол...      456   \n",
       "457    1С:Аудиотеатр. Старые добрые сказки. Аудиоспек...      457   \n",
       "458    1С:Аудиотеатр. Толстой Л. «Крейцерова соната» ...      458   \n",
       "459    1С:Аудиотеатр. Уильям Шекспир. Комедия ошибок ...      459   \n",
       "460    1С:Аудиотеатр. Ф.М. Достоевский. Братья Карама...      460   \n",
       "461    1С:Аудиотеатр. Ф.М. Достоевский. Идиот. (Digip...      461   \n",
       "462    1С:Аудиотеатр. Хрестоматия по литературе. 1 кл...      462   \n",
       "13514                  Комплект «Подарок от Деда мороза»    13514   \n",
       "\n",
       "       item_category_id  \n",
       "133                  45  \n",
       "134                  45  \n",
       "135                  45  \n",
       "136                  45  \n",
       "138                  45  \n",
       "139                  45  \n",
       "140                  45  \n",
       "142                  45  \n",
       "143                  45  \n",
       "149                  45  \n",
       "151                  45  \n",
       "152                  45  \n",
       "153                  45  \n",
       "154                  45  \n",
       "155                  45  \n",
       "156                  45  \n",
       "162                  45  \n",
       "165                  45  \n",
       "166                  45  \n",
       "170                  45  \n",
       "171                  45  \n",
       "172                  45  \n",
       "173                  45  \n",
       "175                  45  \n",
       "176                  45  \n",
       "177                  45  \n",
       "178                  45  \n",
       "179                  45  \n",
       "197                  45  \n",
       "198                  45  \n",
       "...                 ...  \n",
       "428                  45  \n",
       "429                  45  \n",
       "430                  45  \n",
       "431                  45  \n",
       "432                  45  \n",
       "433                  45  \n",
       "435                  45  \n",
       "436                  45  \n",
       "438                  45  \n",
       "439                  45  \n",
       "440                  45  \n",
       "441                  45  \n",
       "442                  45  \n",
       "443                  45  \n",
       "444                  45  \n",
       "445                  45  \n",
       "448                  45  \n",
       "449                  45  \n",
       "450                  45  \n",
       "451                  45  \n",
       "453                  45  \n",
       "454                  45  \n",
       "456                  45  \n",
       "457                  45  \n",
       "458                  45  \n",
       "459                  45  \n",
       "460                  45  \n",
       "461                  45  \n",
       "462                  45  \n",
       "13514                45  \n",
       "\n",
       "[195 rows x 3 columns]"
      ]
     },
     "execution_count": 35,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "items.loc[items.item_category_id == 45]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "6_NIiLB5owFd",
    "outputId": "a0ea72a1-7d93-4a8a-c233-c18f7a90ebb3"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1С:Аудиокниги. Around the World in 80 days (by Jules Verne) (Jewel)'"
      ]
     },
     "execution_count": 36,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "items.loc[134].item_name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "gBt6DM_C4K5b",
    "outputId": "cef580c7-916d-46ba-f628-a560ae55092e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[['ПЛАСТ.'], [], ['UNV'], ['Univ'], ['СТЕКЛО']]"
      ]
     },
     "execution_count": 12,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "item_names = items.item_name.values\n",
    "pat = re.compile(r'\\((.*?)\\)', re.S)\n",
    "features = []\n",
    "\n",
    "for o in item_names:\n",
    "  features.append(re.findall(pat, o)[-2:])\n",
    "  \n",
    "features[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "3bSIJtcpD90-"
   },
   "outputs": [],
   "source": [
    "item_f1 = []\n",
    "item_f2 = []\n",
    "\n",
    "for o in features:\n",
    "  if len(o) == 0:\n",
    "    item_f1.append(np.nan)\n",
    "    item_f2.append(np.nan)\n",
    "  elif len(o) == 1:\n",
    "    item_f1.append(o[0])\n",
    "    item_f2.append(np.nan)\n",
    "  else:\n",
    "    item_f1.append(o[1])\n",
    "    item_f2.append(o[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 195
    },
    "colab_type": "code",
    "id": "6aQCuA0c3zar",
    "outputId": "07540b08-732c-4e8d-a88c-6e0dcf7bae05"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_name</th>\n",
       "      <th>item_id</th>\n",
       "      <th>item_category_id</th>\n",
       "      <th>item_f1</th>\n",
       "      <th>item_f2</th>\n",
       "      <th>item_f1_code</th>\n",
       "      <th>item_f2_code</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>! ВО ВЛАСТИ НАВАЖДЕНИЯ (ПЛАСТ.)         D</td>\n",
       "      <td>0</td>\n",
       "      <td>40</td>\n",
       "      <td>ПЛАСТ.</td>\n",
       "      <td>NaN</td>\n",
       "      <td>836</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>!ABBYY FineReader 12 Professional Edition Full...</td>\n",
       "      <td>1</td>\n",
       "      <td>76</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>729</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>***В ЛУЧАХ СЛАВЫ   (UNV)                    D</td>\n",
       "      <td>2</td>\n",
       "      <td>40</td>\n",
       "      <td>UNV</td>\n",
       "      <td>NaN</td>\n",
       "      <td>671</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>***ГОЛУБАЯ ВОЛНА  (Univ)                      D</td>\n",
       "      <td>3</td>\n",
       "      <td>40</td>\n",
       "      <td>Univ</td>\n",
       "      <td>NaN</td>\n",
       "      <td>673</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>***КОРОБКА (СТЕКЛО)                       D</td>\n",
       "      <td>4</td>\n",
       "      <td>40</td>\n",
       "      <td>СТЕКЛО</td>\n",
       "      <td>NaN</td>\n",
       "      <td>864</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                           item_name  item_id  \\\n",
       "0          ! ВО ВЛАСТИ НАВАЖДЕНИЯ (ПЛАСТ.)         D        0   \n",
       "1  !ABBYY FineReader 12 Professional Edition Full...        1   \n",
       "2      ***В ЛУЧАХ СЛАВЫ   (UNV)                    D        2   \n",
       "3    ***ГОЛУБАЯ ВОЛНА  (Univ)                      D        3   \n",
       "4        ***КОРОБКА (СТЕКЛО)                       D        4   \n",
       "\n",
       "   item_category_id item_f1 item_f2  item_f1_code  item_f2_code  \n",
       "0                40  ПЛАСТ.     NaN           836           138  \n",
       "1                76     NaN     NaN           729           138  \n",
       "2                40     UNV     NaN           671           138  \n",
       "3                40    Univ     NaN           673           138  \n",
       "4                40  СТЕКЛО     NaN           864           138  "
      ]
     },
     "execution_count": 15,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "items['item_f1'] = pd.Series(item_f1)\n",
    "items['item_f2'] = pd.Series(item_f2)\n",
    "items['item_f1_code'] = LabelEncoder().fit_transform(items['item_f1'].fillna('xxx')).astype(np.int16)\n",
    "items['item_f2_code'] = LabelEncoder().fit_transform(items['item_f2'].fillna('xxx')).astype(np.int16)\n",
    "items.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 195
    },
    "colab_type": "code",
    "id": "IFf1vtOMqnfw",
    "outputId": "11875a69-c258-4649-b0ea-be8a41374ef7"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_category_name</th>\n",
       "      <th>item_category_id</th>\n",
       "      <th>type</th>\n",
       "      <th>subtype</th>\n",
       "      <th>type_code</th>\n",
       "      <th>subtype_code</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>PC - Гарнитуры/Наушники</td>\n",
       "      <td>0</td>\n",
       "      <td>PC</td>\n",
       "      <td>Гарнитуры/Наушники</td>\n",
       "      <td>0</td>\n",
       "      <td>29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Аксессуары - PS2</td>\n",
       "      <td>1</td>\n",
       "      <td>Аксессуары</td>\n",
       "      <td>PS2</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Аксессуары - PS3</td>\n",
       "      <td>2</td>\n",
       "      <td>Аксессуары</td>\n",
       "      <td>PS3</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Аксессуары - PS4</td>\n",
       "      <td>3</td>\n",
       "      <td>Аксессуары</td>\n",
       "      <td>PS4</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Аксессуары - PSP</td>\n",
       "      <td>4</td>\n",
       "      <td>Аксессуары</td>\n",
       "      <td>PSP</td>\n",
       "      <td>1</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        item_category_name  item_category_id        type             subtype  \\\n",
       "0  PC - Гарнитуры/Наушники                 0          PC  Гарнитуры/Наушники   \n",
       "1         Аксессуары - PS2                 1  Аксессуары                 PS2   \n",
       "2         Аксессуары - PS3                 2  Аксессуары                 PS3   \n",
       "3         Аксессуары - PS4                 3  Аксессуары                 PS4   \n",
       "4         Аксессуары - PSP                 4  Аксессуары                 PSP   \n",
       "\n",
       "   type_code  subtype_code  \n",
       "0          0            29  \n",
       "1          1             9  \n",
       "2          1            10  \n",
       "3          1            11  \n",
       "4          1            13  "
      ]
     },
     "execution_count": 17,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cats = pd.read_csv(PATH/'item_categories.csv', low_memory=False)\n",
    "cats.loc[32, 'item_category_name'] = 'Карты оплаты - Кино, Музыка, Игры'\n",
    "cats['split'] = cats['item_category_name'].str.split('-')\n",
    "cats['type'] = cats['split'].map(lambda x: x[0].strip())\n",
    "cats['subtype'] = cats['split'].map(lambda x: x[1].strip() if len(x) > 1 else np.nan)\n",
    "cats.drop('split', 1, inplace=True)\n",
    "cats['type_code'] = LabelEncoder().fit_transform(cats['type']).astype(np.int8)\n",
    "cats['subtype_code'] = LabelEncoder().fit_transform(cats['subtype'].fillna('xxx')).astype(np.int8)\n",
    "cats.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 225
    },
    "colab_type": "code",
    "id": "yXEJ12w-yU43",
    "outputId": "8cc56d00-4b13-436b-f8ba-dc882f01e88e"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>item_category_name</th>\n",
       "      <th>item_category_id</th>\n",
       "      <th>type</th>\n",
       "      <th>subtype</th>\n",
       "      <th>type_code</th>\n",
       "      <th>subtype_code</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Билеты (Цифра)</td>\n",
       "      <td>8</td>\n",
       "      <td>Билеты (Цифра)</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Доставка товара</td>\n",
       "      <td>9</td>\n",
       "      <td>Доставка товара</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>79</th>\n",
       "      <td>Служебные</td>\n",
       "      <td>79</td>\n",
       "      <td>Служебные</td>\n",
       "      <td>NaN</td>\n",
       "      <td>15</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>81</th>\n",
       "      <td>Чистые носители (шпиль)</td>\n",
       "      <td>81</td>\n",
       "      <td>Чистые носители (шпиль)</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82</th>\n",
       "      <td>Чистые носители (штучные)</td>\n",
       "      <td>82</td>\n",
       "      <td>Чистые носители (штучные)</td>\n",
       "      <td>NaN</td>\n",
       "      <td>17</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>83</th>\n",
       "      <td>Элементы питания</td>\n",
       "      <td>83</td>\n",
       "      <td>Элементы питания</td>\n",
       "      <td>NaN</td>\n",
       "      <td>18</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           item_category_name  item_category_id                       type  \\\n",
       "8              Билеты (Цифра)                 8             Билеты (Цифра)   \n",
       "9             Доставка товара                 9            Доставка товара   \n",
       "79                  Служебные                79                  Служебные   \n",
       "81    Чистые носители (шпиль)                81    Чистые носители (шпиль)   \n",
       "82  Чистые носители (штучные)                82  Чистые носители (штучные)   \n",
       "83           Элементы питания                83           Элементы питания   \n",
       "\n",
       "   subtype  type_code  subtype_code  \n",
       "8      NaN          2            18  \n",
       "9      NaN          3            18  \n",
       "79     NaN         15            18  \n",
       "81     NaN         16            18  \n",
       "82     NaN         17            18  \n",
       "83     NaN         18            18  "
      ]
     },
     "execution_count": 18,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cats[cats.subtype.isnull()]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "tovyw8i8IZzm"
   },
   "source": [
    "## Feature engineering"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Lv-apQ_BJY0C"
   },
   "outputs": [],
   "source": [
    "from itertools import product\n",
    "from sklearn.preprocessing import LabelEncoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "N9XNlYEHnKdz"
   },
   "outputs": [],
   "source": [
    "items = pd.read_csv(f'{PATH}/items.csv')\n",
    "shops = pd.read_csv(f'{PATH}/shops.csv')\n",
    "cats = pd.read_csv(f'{PATH}/item_categories.csv')\n",
    "train = pd.read_csv(f'{PATH}/sales_train.csv')\n",
    "# set index to ID to avoid droping it later\n",
    "test  = pd.read_csv(f'{PATH}/test.csv').set_index('ID')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "j1V--LjHnKZ0"
   },
   "outputs": [],
   "source": [
    "train = train[(train.item_price < 100000) & (train.item_cnt_day <= 1000)]\n",
    "train.loc[train.item_price <= 0, 'item_price'] = 2499.0\n",
    "\n",
    "# Якутск Орджоникидзе, 56\n",
    "train.loc[train.shop_id == 0, 'shop_id'] = 57\n",
    "test.loc[test.shop_id == 0, 'shop_id'] = 57\n",
    "# Якутск ТЦ \"Центральный\"\n",
    "train.loc[train.shop_id == 1, 'shop_id'] = 58\n",
    "test.loc[test.shop_id == 1, 'shop_id'] = 58\n",
    "# Жуковский ул. Чкалова 39м²\n",
    "train.loc[train.shop_id == 10, 'shop_id'] = 11\n",
    "test.loc[test.shop_id == 10, 'shop_id'] = 11\n",
    "train.loc[train.shop_id == 39, 'shop_id'] = 40\n",
    "test.loc[test.shop_id == 39, 'shop_id'] = 40\n",
    "shops.loc[shops.shop_name == 'Сергиев Посад ТЦ \"7Я\"', 'shop_name'] = 'СергиевПосад ТЦ \"7Я\"'\n",
    "shops.loc[shops.shop_name == 'Цифровой склад 1С-Онлайн', 'shop_name'] = 'Цифровойсклад 1С-Онлайн'\n",
    "shops['city'] = shops.shop_name.str.split(' ').map(lambda x: x[0])\n",
    "shops.loc[shops.city == '!Якутск', 'city'] = 'Якутск'\n",
    "shops['shop_type'] = shops.shop_name.str.split(' ')\\\n",
    "          .map(lambda x: 'ТЦ' if 'ТЦ' == x[1] else  'ТРЦ' if 'ТРЦ' == x[1] else\n",
    "           'ТК' if 'ТК' == x[1] else 'ТРК' if 'ТРК' == x[1] else 'МТРЦ' if 'МТРЦ' == x[1] else 'other')\n",
    "shops['city_code'] = LabelEncoder().fit_transform(shops['city']).astype(np.int8)\n",
    "shops['shop_type_code'] = LabelEncoder().fit_transform(shops['shop_type']).astype(np.int8)\n",
    "shops = shops[['shop_id', 'city_code', 'shop_type_code']]\n",
    "\n",
    "cats.loc[32, 'item_category_name'] = 'Карты оплаты - Кино, Музыка, Игры'\n",
    "cats['type'] = cats['item_category_name'].str.split('-').map(lambda x: x[0].strip())\n",
    "cats['subtype'] = cats['item_category_name'].str.split('-').map(lambda x: x[1].strip() if len(x) > 1 else np.nan)\n",
    "cats['type_code'] = LabelEncoder().fit_transform(cats['type']).astype(np.int8)\n",
    "cats['subtype_code'] = LabelEncoder().fit_transform(cats['subtype'].fillna('xxx')).astype(np.int8)\n",
    "cats = cats[['item_category_id', 'type_code', 'subtype_code']]\n",
    "\n",
    "item_names = items.item_name.values\n",
    "pat = re.compile(r'\\((.*?)\\)', re.S)\n",
    "item_f1, item_f2, features = [], [], []\n",
    "for o in item_names:\n",
    "  features.append(re.findall(pat, o)[-2:])\n",
    "for o in features:\n",
    "  if len(o) == 0:\n",
    "    item_f1.append(np.nan)\n",
    "    item_f2.append(np.nan)\n",
    "  elif len(o) == 1:\n",
    "    item_f1.append(o[0])\n",
    "    item_f2.append(np.nan)\n",
    "  else:\n",
    "    item_f1.append(o[1])\n",
    "    item_f2.append(o[0])\n",
    "items['item_f1'] = pd.Series(item_f1)\n",
    "items['item_f2'] = pd.Series(item_f2)\n",
    "items['item_f1_code'] = LabelEncoder().fit_transform(items['item_f1'].fillna('xxx')).astype(np.int16)\n",
    "items['item_f2_code'] = LabelEncoder().fit_transform(items['item_f2'].fillna('xxx')).astype(np.uint8)\n",
    "items.drop(['item_f1', 'item_f2'], 1, inplace=True)\n",
    "items.drop(['item_name'], 1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# if ran on google colab\n",
    "# items.drop(['item_f1_code', 'item_f2_code'], 1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "2HgKQaweo13p",
    "outputId": "9f804bbc-4fd5-474f-9e51-45d684dba8cd"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(363, 5100, 214200)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(list(set(test.item_id) - set(test.item_id).intersection(set(train.item_id)))), len(list(set(test.item_id))), len(test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "KR5kxAyvo10P"
   },
   "outputs": [],
   "source": [
    "matrix = []\n",
    "cols = ['date_block_num','shop_id','item_id']\n",
    "for i in range(34):\n",
    "    sales = train[train.date_block_num==i]\n",
    "    matrix.append(np.array(list(product([i], sales.shop_id.unique(), sales.item_id.unique())), dtype='int16'))\n",
    "    \n",
    "matrix = pd.DataFrame(np.vstack(matrix), columns=cols)\n",
    "matrix['date_block_num'] = matrix['date_block_num'].astype(np.int8)\n",
    "matrix['shop_id'] = matrix['shop_id'].astype(np.int8)\n",
    "matrix['item_id'] = matrix['item_id'].astype(np.int16)\n",
    "matrix.sort_values(cols,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "bv10FuGTqct8"
   },
   "outputs": [],
   "source": [
    "train['revenue'] = train['item_price'] * train['item_cnt_day']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "hW0yQO8PqcqF"
   },
   "outputs": [],
   "source": [
    "group = train.groupby(['date_block_num','shop_id','item_id']).agg({'item_cnt_day': ['sum']})\n",
    "group.columns = ['item_cnt_month']\n",
    "group.reset_index(inplace=True)\n",
    "\n",
    "matrix = pd.merge(matrix, group, on=cols, how='left')\n",
    "matrix['item_cnt_month'] = (matrix['item_cnt_month']\n",
    "                                .fillna(0)\n",
    "                                .clip(0,20) # NB clip target here\n",
    "                                .astype(np.float16))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "0TulOlJVqcm_"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:6: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n",
      "of pandas will change to not sort by default.\n",
      "\n",
      "To accept the future behavior, pass 'sort=False'.\n",
      "\n",
      "To retain the current behavior and silence the warning, pass 'sort=True'.\n",
      "\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "test['date_block_num'] = 34\n",
    "test['date_block_num'] = test['date_block_num'].astype(np.int8)\n",
    "test['shop_id'] = test['shop_id'].astype(np.int8)\n",
    "test['item_id'] = test['item_id'].astype(np.int16)\n",
    "\n",
    "matrix = pd.concat([matrix, test], ignore_index=True, keys=cols)\n",
    "matrix.fillna(0, inplace=True) # 34 month\n",
    "matrix = pd.merge(matrix, shops, on=['shop_id'], how='left')\n",
    "matrix = pd.merge(matrix, items, on=['item_id'], how='left')\n",
    "matrix = pd.merge(matrix, cats, on=['item_category_id'], how='left')\n",
    "matrix['item_category_id'] = matrix['item_category_id'].astype(np.int8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "p84iz4uPo1vx"
   },
   "outputs": [],
   "source": [
    "def lag_feature(df, lags, col):\n",
    "    tmp = df[['date_block_num','shop_id','item_id',col]]\n",
    "    for i in lags:\n",
    "        shifted = tmp.copy()\n",
    "        shifted.columns = ['date_block_num','shop_id','item_id', col+'_lag_'+str(i)]\n",
    "        shifted['date_block_num'] += i\n",
    "        df = pd.merge(df, shifted, on=['date_block_num','shop_id','item_id'], how='left')\n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 50
    },
    "colab_type": "code",
    "id": "qFdBbZlir9CS",
    "outputId": "d8296382-62f0-44c6-ade9-01f93e415a0c"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 43.7 s, sys: 5.8 s, total: 49.5 s\n",
      "Wall time: 29.2 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "matrix = lag_feature(matrix, [1,2,3,6,12], 'item_cnt_month')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### mean encoding"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 50
    },
    "colab_type": "code",
    "id": "SjRFCC7a2q79",
    "outputId": "08556141-70e6-4f52-b889-c076febd9413"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 8min 6s, sys: 3min 4s, total: 11min 10s\n",
      "Wall time: 4min 1s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "group = matrix.groupby(['date_block_num']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num'], how='left')\n",
    "matrix['date_avg_item_cnt'] = matrix['date_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_avg_item_cnt')\n",
    "matrix.drop(['date_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'item_id']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_item_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num','item_id'], how='left')\n",
    "matrix['date_item_avg_item_cnt'] = matrix['date_item_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1,2,3,6,12], 'date_item_avg_item_cnt')\n",
    "matrix.drop(['date_item_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'shop_id']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_shop_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num','shop_id'], how='left')\n",
    "matrix['date_shop_avg_item_cnt'] = matrix['date_shop_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1,2,3,6,12], 'date_shop_avg_item_cnt')\n",
    "matrix.drop(['date_shop_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'item_category_id']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_cat_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num','item_category_id'], how='left')\n",
    "matrix['date_cat_avg_item_cnt'] = matrix['date_cat_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_cat_avg_item_cnt')\n",
    "matrix.drop(['date_cat_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'item_category_id', 'item_f1_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_cat_item_f1_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num','item_category_id', 'item_f1_code'], how='left')\n",
    "matrix['date_cat_item_f1_avg_item_cnt'] = matrix['date_cat_item_f1_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_cat_item_f1_avg_item_cnt')\n",
    "matrix.drop(['date_cat_item_f1_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'item_category_id', 'item_f2_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_cat_item_f2_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num','item_category_id', 'item_f2_code'], how='left')\n",
    "matrix['date_cat_item_f1_avg_item_cnt'] = matrix['date_cat_item_f2_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_cat_item_f2_avg_item_cnt')\n",
    "matrix.drop(['date_cat_item_f2_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'shop_id', 'item_category_id']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = ['date_shop_cat_avg_item_cnt']\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num', 'shop_id', 'item_category_id'], how='left')\n",
    "matrix['date_shop_cat_avg_item_cnt'] = matrix['date_shop_cat_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_shop_cat_avg_item_cnt')\n",
    "matrix.drop(['date_shop_cat_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'shop_id', 'type_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = ['date_shop_type_avg_item_cnt']\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num', 'shop_id', 'type_code'], how='left')\n",
    "matrix['date_shop_type_avg_item_cnt'] = matrix['date_shop_type_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_shop_type_avg_item_cnt')\n",
    "matrix.drop(['date_shop_type_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'shop_id', 'subtype_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = ['date_shop_subtype_avg_item_cnt']\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num', 'shop_id', 'subtype_code'], how='left')\n",
    "matrix['date_shop_subtype_avg_item_cnt'] = matrix['date_shop_subtype_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_shop_subtype_avg_item_cnt')\n",
    "matrix.drop(['date_shop_subtype_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'city_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_city_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num', 'city_code'], how='left')\n",
    "matrix['date_city_avg_item_cnt'] = matrix['date_city_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_city_avg_item_cnt')\n",
    "matrix.drop(['date_city_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'shop_type_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_shop_type_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num', 'shop_type_code'], how='left')\n",
    "matrix['date_shop_type_avg_item_cnt'] = matrix['date_shop_type_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_shop_type_avg_item_cnt')\n",
    "matrix.drop(['date_shop_type_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'item_id', 'city_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_item_city_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num', 'item_id', 'city_code'], how='left')\n",
    "matrix['date_item_city_avg_item_cnt'] = matrix['date_item_city_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_item_city_avg_item_cnt')\n",
    "matrix.drop(['date_item_city_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'item_id', 'shop_type_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_item_shop_type_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num', 'item_id', 'shop_type_code'], how='left')\n",
    "matrix['date_item_shop_type_avg_item_cnt'] = matrix['date_item_shop_type_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_item_shop_type_avg_item_cnt')\n",
    "matrix.drop(['date_item_shop_type_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'type_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_type_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num', 'type_code'], how='left')\n",
    "matrix['date_type_avg_item_cnt'] = matrix['date_type_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_type_avg_item_cnt')\n",
    "matrix.drop(['date_type_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'subtype_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_subtype_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num', 'subtype_code'], how='left')\n",
    "matrix['date_subtype_avg_item_cnt'] = matrix['date_subtype_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_subtype_avg_item_cnt')\n",
    "matrix.drop(['date_subtype_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'subtype_code', 'item_f1_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_subtype_item_f1_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num', 'subtype_code', 'item_f1_code'], how='left')\n",
    "matrix['date_subtype_item_f1_avg_item_cnt'] = matrix['date_subtype_item_f1_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_subtype_item_f1_avg_item_cnt')\n",
    "matrix.drop(['date_subtype_item_f1_avg_item_cnt'], axis=1, inplace=True)\n",
    "\n",
    "group = matrix.groupby(['date_block_num', 'subtype_code', 'item_f2_code']).agg({'item_cnt_month': ['mean']})\n",
    "group.columns = [ 'date_subtype_item_f2_avg_item_cnt' ]\n",
    "group.reset_index(inplace=True)\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num', 'subtype_code', 'item_f2_code'], how='left')\n",
    "matrix['date_subtype_item_f2_avg_item_cnt'] = matrix['date_subtype_item_f2_avg_item_cnt'].astype(np.float16)\n",
    "matrix = lag_feature(matrix, [1], 'date_subtype_item_f2_avg_item_cnt')\n",
    "matrix.drop(['date_subtype_item_f2_avg_item_cnt'], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### price trend features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 50
    },
    "colab_type": "code",
    "id": "bn-PaDUCr8-B",
    "outputId": "a09c9741-8e5d-4509-83cc-039eae9158f3"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 4min 59s, sys: 31 s, total: 5min 30s\n",
      "Wall time: 4min 13s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "group = train.groupby(['item_id']).agg({'item_price': ['mean']})\n",
    "group.columns = ['item_avg_item_price']\n",
    "group.reset_index(inplace=True)\n",
    "\n",
    "matrix = pd.merge(matrix, group, on=['item_id'], how='left')\n",
    "matrix['item_avg_item_price'] = matrix['item_avg_item_price'].astype(np.float16)\n",
    "\n",
    "group = train.groupby(['date_block_num','item_id']).agg({'item_price': ['mean']})\n",
    "group.columns = ['date_item_avg_item_price']\n",
    "group.reset_index(inplace=True)\n",
    "\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num','item_id'], how='left')\n",
    "matrix['date_item_avg_item_price'] = matrix['date_item_avg_item_price'].astype(np.float16)\n",
    "\n",
    "lags = [1,2,3,4,5,6]\n",
    "matrix = lag_feature(matrix, lags, 'date_item_avg_item_price')\n",
    "\n",
    "for i in lags:\n",
    "    matrix['delta_price_lag_'+str(i)] = \\\n",
    "        (matrix['date_item_avg_item_price_lag_'+str(i)] - matrix['item_avg_item_price']) / matrix['item_avg_item_price']\n",
    "\n",
    "def select_trend(row):\n",
    "    for i in lags:\n",
    "        if row['delta_price_lag_'+str(i)]:\n",
    "            return row['delta_price_lag_'+str(i)]\n",
    "    return 0\n",
    "    \n",
    "matrix['delta_price_lag'] = matrix.apply(select_trend, axis=1)\n",
    "matrix['delta_price_lag'] = matrix['delta_price_lag'].astype(np.float16)\n",
    "matrix['delta_price_lag'].fillna(0, inplace=True)\n",
    "\n",
    "# https://stackoverflow.com/questions/31828240/first-non-null-value-per-row-from-a-list-of-pandas-columns/31828559\n",
    "# matrix['price_trend'] = matrix[['delta_price_lag_1','delta_price_lag_2','delta_price_lag_3']].bfill(axis=1).iloc[:, 0]\n",
    "# Invalid dtype for backfill_2d [float16]\n",
    "\n",
    "fetures_to_drop = ['item_avg_item_price', 'date_item_avg_item_price']\n",
    "for i in lags:\n",
    "    fetures_to_drop += ['date_item_avg_item_price_lag_'+str(i)]\n",
    "    fetures_to_drop += ['delta_price_lag_'+str(i)]\n",
    "\n",
    "matrix.drop(fetures_to_drop, axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### revenue trend features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 50
    },
    "colab_type": "code",
    "id": "KiZlKEZOr88H",
    "outputId": "66cfa2e7-75e5-45c7-c1a6-493e75f748e8"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 29.4 s, sys: 24.9 s, total: 54.2 s\n",
      "Wall time: 15.8 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "group = train.groupby(['date_block_num','shop_id']).agg({'revenue': ['sum']})\n",
    "group.columns = ['date_shop_revenue']\n",
    "group.reset_index(inplace=True)\n",
    "\n",
    "matrix = pd.merge(matrix, group, on=['date_block_num','shop_id'], how='left')\n",
    "matrix['date_shop_revenue'] = matrix['date_shop_revenue'].astype(np.float32)\n",
    "\n",
    "group = group.groupby(['shop_id']).agg({'date_shop_revenue': ['mean']})\n",
    "group.columns = ['shop_avg_revenue']\n",
    "group.reset_index(inplace=True)\n",
    "\n",
    "matrix = pd.merge(matrix, group, on=['shop_id'], how='left')\n",
    "matrix['shop_avg_revenue'] = matrix['shop_avg_revenue'].astype(np.float32)\n",
    "\n",
    "matrix['delta_revenue'] = (matrix['date_shop_revenue'] - matrix['shop_avg_revenue']) / matrix['shop_avg_revenue']\n",
    "matrix['delta_revenue'] = matrix['delta_revenue'].astype(np.float16)\n",
    "\n",
    "matrix = lag_feature(matrix, [1], 'delta_revenue')\n",
    "\n",
    "matrix.drop(['date_shop_revenue','shop_avg_revenue','delta_revenue'], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### the resident item features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 50
    },
    "colab_type": "code",
    "id": "h3WnSuq6r85K",
    "outputId": "1cf64617-f7cc-496f-c020-35afa1038a8e"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 17min 46s, sys: 1.65 s, total: 17min 48s\n",
      "Wall time: 17min 47s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "cache = {}\n",
    "matrix['item_shop_last_sale'] = -1\n",
    "matrix['item_shop_last_sale'] = matrix['item_shop_last_sale'].astype(np.int8)\n",
    "for idx, row in matrix.iterrows():    \n",
    "    key = str(row.item_id)+' '+str(row.shop_id)\n",
    "    if key not in cache:\n",
    "        if row.item_cnt_month!=0:\n",
    "            cache[key] = row.date_block_num\n",
    "    else:\n",
    "        last_date_block_num = cache[key]\n",
    "        matrix.at[idx, 'item_shop_last_sale'] = row.date_block_num - last_date_block_num\n",
    "        cache[key] = row.date_block_num"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### the resident item features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 50
    },
    "colab_type": "code",
    "id": "uQRGoMn4r81g",
    "outputId": "15ec3f8d-a724-44b7-cede-c6f7b3ef4965"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 11min 5s, sys: 1.26 s, total: 11min 7s\n",
      "Wall time: 11min 6s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "cache = {}\n",
    "matrix['item_last_sale'] = -1\n",
    "matrix['item_last_sale'] = matrix['item_last_sale'].astype(np.int8)\n",
    "for idx, row in matrix.iterrows():    \n",
    "    key = row.item_id\n",
    "    if key not in cache:\n",
    "        if row.item_cnt_month!=0:\n",
    "            cache[key] = row.date_block_num\n",
    "    else:\n",
    "        last_date_block_num = cache[key]\n",
    "        if row.date_block_num>last_date_block_num:\n",
    "            matrix.at[idx, 'item_last_sale'] = row.date_block_num - last_date_block_num\n",
    "            cache[key] = row.date_block_num"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### new item features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 50
    },
    "colab_type": "code",
    "id": "wuSTnNGnr8xG",
    "outputId": "6f13f79e-5080-44c9-fa15-f0feafc2e58d"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 3.12 s, sys: 2.41 s, total: 5.52 s\n",
      "Wall time: 2.04 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "matrix['item_shop_first_sale'] = matrix['date_block_num'] - matrix.groupby(['item_id','shop_id'])['date_block_num'].transform('min')\n",
    "matrix['item_first_sale'] = matrix['date_block_num'] - matrix.groupby('item_id')['date_block_num'].transform('min')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "sR0LeUCUBTN1"
   },
   "outputs": [],
   "source": [
    "matrix['year'] = matrix.date_block_num.map(lambda x: 2013 + x // 12).astype(np.int8)\n",
    "matrix['month'] = matrix.date_block_num.map(lambda x: (x % 12) + 1).astype(np.int8)\n",
    "matrix.reset_index(drop=True, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "AsZ8rM_Nv9Ri"
   },
   "outputs": [],
   "source": [
    "matrix.to_pickle(PATH/'matrix.pkl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Rb09Y7o9DJLu"
   },
   "outputs": [],
   "source": [
    "data = pickle.load(open(PATH/'matrix.pkl', 'rb'))\n",
    "data = data[data.date_block_num > 11]\n",
    "data.reset_index(drop=True, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "-0YxupeizJ84",
    "outputId": "8dc55922-601a-4cd5-941b-04acbe3174e8"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10, 39, 50)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dep_var = 'item_cnt_month'\n",
    "cat_vars = ['date_block_num', 'item_id', 'shop_id', 'city_code', 'shop_type_code',\n",
    "           'item_category_id', 'type_code', 'subtype_code', 'month', 'year']\n",
    "contin_vars = list(set(data.columns) - set(cat_vars) - set([dep_var]))\n",
    "len(cat_vars), len(contin_vars), len(data.columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "PXbsiPZU0hl9"
   },
   "outputs": [],
   "source": [
    "for o in cat_vars:\n",
    "  data[o] = data[o].astype('category').cat.as_ordered()\n",
    "# for o in contin_vars:\n",
    "#   data[o] = data[o].fillna(0).astype('float32')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 185
    },
    "colab_type": "code",
    "id": "UoDQRthm2BPj",
    "outputId": "c7fac1e3-dd4f-4c40-83cd-276d9ebe5270"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('date_block_num', 24),\n",
       " ('item_id', 17433),\n",
       " ('shop_id', 54),\n",
       " ('city_code', 32),\n",
       " ('shop_type_code', 7),\n",
       " ('item_category_id', 81),\n",
       " ('type_code', 20),\n",
       " ('subtype_code', 59),\n",
       " ('month', 13),\n",
       " ('year', 3)]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[(o, len(data[o].cat.categories)+1) for o in cat_vars]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "dlhoIROe1KvW"
   },
   "source": [
    "## RF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 470
    },
    "colab_type": "code",
    "id": "8wt9QYNR0486",
    "outputId": "53806bf4-bcbd-482e-e10a-72ae1be5a481"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'item_cnt_month_lag_1': 0.0,\n",
       " 'item_cnt_month_lag_2': 0.0,\n",
       " 'item_cnt_month_lag_3': 0.0,\n",
       " 'item_cnt_month_lag_6': 0.0,\n",
       " 'item_cnt_month_lag_12': 0.0,\n",
       " 'date_avg_item_cnt_lag_1': 0.279,\n",
       " 'date_item_avg_item_cnt_lag_1': 0.1277,\n",
       " 'date_item_avg_item_cnt_lag_2': 0.1364,\n",
       " 'date_item_avg_item_cnt_lag_3': 0.1428,\n",
       " 'date_item_avg_item_cnt_lag_6': 0.1569,\n",
       " 'date_item_avg_item_cnt_lag_12': 0.1837,\n",
       " 'date_shop_avg_item_cnt_lag_1': 0.2307,\n",
       " 'date_shop_avg_item_cnt_lag_2': 0.2341,\n",
       " 'date_shop_avg_item_cnt_lag_3': 0.2332,\n",
       " 'date_shop_avg_item_cnt_lag_6': 0.237,\n",
       " 'date_shop_avg_item_cnt_lag_12': 0.2434,\n",
       " 'date_cat_avg_item_cnt_lag_1': 0.2274,\n",
       " 'date_cat_item_f1_avg_item_cnt_lag_1': 0.2046,\n",
       " 'date_cat_item_f2_avg_item_cnt_lag_1': 0.2283,\n",
       " 'date_shop_cat_avg_item_cnt_lag_1': 0.1569,\n",
       " 'date_shop_type_avg_item_cnt_lag_1_x': 0.1744,\n",
       " 'date_shop_subtype_avg_item_cnt_lag_1': 0.1576,\n",
       " 'date_city_avg_item_cnt_lag_1': 0.2426,\n",
       " 'date_shop_type_avg_item_cnt_lag_1_y': 0.288,\n",
       " 'date_item_city_avg_item_cnt_lag_1': 0.0,\n",
       " 'date_item_shop_type_avg_item_cnt_lag_1': 0.11536,\n",
       " 'date_type_avg_item_cnt_lag_1': 0.2167,\n",
       " 'date_subtype_avg_item_cnt_lag_1': 0.2274,\n",
       " 'date_subtype_item_f1_avg_item_cnt_lag_1': 0.2065,\n",
       " 'date_subtype_item_f2_avg_item_cnt_lag_1': 0.2292,\n",
       " 'delta_revenue_lag_1': -0.0512}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df, y, nas = proc_df(data, dep_var)\n",
    "nas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "r237yEnVPjE4",
    "outputId": "008727f5-f699-480d-897a-96e6d2edf367"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.date_block_num.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "4UbnN-Qd1Int"
   },
   "outputs": [],
   "source": [
    "trn_idxs = df[df.date_block_num < 22].index.values\n",
    "val_idxs = df[df.date_block_num == 22].index.values\n",
    "test_idxs = df[df.date_block_num == 23].index.values\n",
    "\n",
    "trn_x, trn_y = df.loc[trn_idxs].copy(), y[trn_idxs].copy()\n",
    "val_x, val_y = df.loc[val_idxs].copy(), y[val_idxs].copy()\n",
    "test_x = df.loc[test_idxs].copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "qEBc-Tm9EC6-",
    "outputId": "2cd89483-7d1b-4dcf-c0f6-15a00786964e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "112"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "del data\n",
    "import gc\n",
    "gc.collect()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def rmse(x, t): return np.sqrt(np.mean((x - t) ** 2))\n",
    "  \n",
    "def show_results(m):\n",
    "  res = [m.score(trn_x, trn_y), m.score(val_x, val_y)]\n",
    "  if hasattr(m, 'oob_score_'): res.append(m.oob_score_)\n",
    "  res.append(rmse(m.predict(val_x), val_y))\n",
    "  return res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 134
    },
    "colab_type": "code",
    "id": "_uK-pi6cL4ZW",
    "outputId": "c263e1d0-9230-4f22-d279-add709b23dd0"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:36: RuntimeWarning: overflow encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims, initial)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 5min 57s, sys: 29.5 s, total: 6min 26s\n",
      "Wall time: 2min 20s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:36: RuntimeWarning: overflow encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims, initial)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.5325591159079617,\n",
       " 0.3752106515417507,\n",
       " 0.5227038231220662,\n",
       " 0.8979843084539196]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = RandomForestRegressor(n_estimators=40, n_jobs=-1, min_samples_leaf=3, max_features=0.5, oob_score=True)\n",
    "%time m.fit(trn_x, trn_y)\n",
    "show_results(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 501
    },
    "colab_type": "code",
    "id": "3gN4rE0ZL4fm",
    "outputId": "d2e887a4-0677-48a7-fbf5-79212dd60976"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f241cc315c0>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fi = rf_feat_importance(m, trn_x)\n",
    "fi.plot('cols', 'imp', 'barh', figsize=(10, 8))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1231
    },
    "colab_type": "code",
    "id": "GFiP4YeyL4dJ",
    "outputId": "9eaea6d6-4af5-4890-c5ac-07f473b77dba"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cols</th>\n",
       "      <th>imp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>date_item_avg_item_cnt_lag_2</td>\n",
       "      <td>1.078607e-02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>date_item_avg_item_cnt_lag_3</td>\n",
       "      <td>1.004789e-02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>item_f1_code</td>\n",
       "      <td>1.001795e-02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>delta_revenue_lag_1</td>\n",
       "      <td>9.896258e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>date_city_avg_item_cnt_lag_1</td>\n",
       "      <td>9.421010e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>date_shop_type_avg_item_cnt_lag_1_y</td>\n",
       "      <td>8.878013e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>date_type_avg_item_cnt_lag_1</td>\n",
       "      <td>8.645224e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>shop_type_code</td>\n",
       "      <td>8.624644e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>item_cnt_month_lag_6</td>\n",
       "      <td>8.575114e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>date_shop_avg_item_cnt_lag_2</td>\n",
       "      <td>8.435021e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>item_shop_first_sale</td>\n",
       "      <td>8.318766e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>date_item_avg_item_cnt_lag_6</td>\n",
       "      <td>7.877855e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>date_shop_avg_item_cnt_lag_3</td>\n",
       "      <td>7.138736e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>date_subtype_item_f1_avg_item_cnt_lag_1</td>\n",
       "      <td>7.013376e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>date_cat_item_f1_avg_item_cnt_lag_1</td>\n",
       "      <td>6.581841e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>date_avg_item_cnt_lag_1</td>\n",
       "      <td>6.076988e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>date_cat_item_f2_avg_item_cnt_lag_1</td>\n",
       "      <td>6.058210e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>date_subtype_item_f2_avg_item_cnt_lag_1</td>\n",
       "      <td>6.006550e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>date_shop_avg_item_cnt_lag_6</td>\n",
       "      <td>6.000575e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>type_code</td>\n",
       "      <td>5.722763e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>date_cat_avg_item_cnt_lag_1</td>\n",
       "      <td>5.031503e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>date_subtype_avg_item_cnt_lag_1</td>\n",
       "      <td>5.016267e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>date_item_avg_item_cnt_lag_12</td>\n",
       "      <td>4.586457e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>date_shop_avg_item_cnt_lag_12</td>\n",
       "      <td>4.442203e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>item_cnt_month_lag_12</td>\n",
       "      <td>4.053169e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>year</td>\n",
       "      <td>1.557792e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>61</th>\n",
       "      <td>date_shop_avg_item_cnt_lag_2_na</td>\n",
       "      <td>1.169527e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56</th>\n",
       "      <td>date_item_avg_item_cnt_lag_2_na</td>\n",
       "      <td>8.265463e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>item_shop_last_sale</td>\n",
       "      <td>8.019012e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>item_cnt_month_lag_2_na</td>\n",
       "      <td>4.803873e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57</th>\n",
       "      <td>date_item_avg_item_cnt_lag_3_na</td>\n",
       "      <td>3.158151e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>item_cnt_month_lag_6_na</td>\n",
       "      <td>3.120821e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>item_f2_code</td>\n",
       "      <td>2.666869e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>date_shop_avg_item_cnt_lag_12_na</td>\n",
       "      <td>2.656624e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>item_cnt_month_lag_3_na</td>\n",
       "      <td>2.564151e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>77</th>\n",
       "      <td>date_subtype_item_f1_avg_item_cnt_lag_1_na</td>\n",
       "      <td>2.117777e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>79</th>\n",
       "      <td>delta_revenue_lag_1_na</td>\n",
       "      <td>2.115967e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>62</th>\n",
       "      <td>date_shop_avg_item_cnt_lag_3_na</td>\n",
       "      <td>2.061224e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>date_item_avg_item_cnt_lag_12_na</td>\n",
       "      <td>1.959963e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63</th>\n",
       "      <td>date_shop_avg_item_cnt_lag_6_na</td>\n",
       "      <td>1.799856e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71</th>\n",
       "      <td>date_city_avg_item_cnt_lag_1_na</td>\n",
       "      <td>1.685769e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>58</th>\n",
       "      <td>date_item_avg_item_cnt_lag_6_na</td>\n",
       "      <td>1.523081e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>item_cnt_month_lag_12_na</td>\n",
       "      <td>1.497314e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>item_cnt_month_lag_1_na</td>\n",
       "      <td>1.135935e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74</th>\n",
       "      <td>date_item_shop_type_avg_item_cnt_lag_1_na</td>\n",
       "      <td>1.064609e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>66</th>\n",
       "      <td>date_cat_item_f1_avg_item_cnt_lag_1_na</td>\n",
       "      <td>8.449508e-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>date_avg_item_cnt_lag_1_na</td>\n",
       "      <td>3.797676e-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>date_cat_avg_item_cnt_lag_1_na</td>\n",
       "      <td>3.552341e-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>69</th>\n",
       "      <td>date_shop_type_avg_item_cnt_lag_1_x_na</td>\n",
       "      <td>3.106550e-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>date_shop_cat_avg_item_cnt_lag_1_na</td>\n",
       "      <td>2.993919e-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>item_last_sale</td>\n",
       "      <td>2.655641e-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>72</th>\n",
       "      <td>date_shop_type_avg_item_cnt_lag_1_y_na</td>\n",
       "      <td>2.483035e-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>76</th>\n",
       "      <td>date_subtype_avg_item_cnt_lag_1_na</td>\n",
       "      <td>1.673699e-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>60</th>\n",
       "      <td>date_shop_avg_item_cnt_lag_1_na</td>\n",
       "      <td>6.668625e-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>78</th>\n",
       "      <td>date_subtype_item_f2_avg_item_cnt_lag_1_na</td>\n",
       "      <td>1.937219e-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>73</th>\n",
       "      <td>date_item_city_avg_item_cnt_lag_1_na</td>\n",
       "      <td>1.852777e-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75</th>\n",
       "      <td>date_type_avg_item_cnt_lag_1_na</td>\n",
       "      <td>1.814543e-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>date_item_avg_item_cnt_lag_1_na</td>\n",
       "      <td>1.520484e-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>70</th>\n",
       "      <td>date_shop_subtype_avg_item_cnt_lag_1_na</td>\n",
       "      <td>1.295110e-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67</th>\n",
       "      <td>date_cat_item_f2_avg_item_cnt_lag_1_na</td>\n",
       "      <td>9.773624e-07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                          cols           imp\n",
       "17                date_item_avg_item_cnt_lag_2  1.078607e-02\n",
       "18                date_item_avg_item_cnt_lag_3  1.004789e-02\n",
       "6                                 item_f1_code  1.001795e-02\n",
       "42                         delta_revenue_lag_1  9.896258e-03\n",
       "33                date_city_avg_item_cnt_lag_1  9.421010e-03\n",
       "34         date_shop_type_avg_item_cnt_lag_1_y  8.878013e-03\n",
       "37                date_type_avg_item_cnt_lag_1  8.645224e-03\n",
       "4                               shop_type_code  8.624644e-03\n",
       "13                        item_cnt_month_lag_6  8.575114e-03\n",
       "22                date_shop_avg_item_cnt_lag_2  8.435021e-03\n",
       "45                        item_shop_first_sale  8.318766e-03\n",
       "19                date_item_avg_item_cnt_lag_6  7.877855e-03\n",
       "23                date_shop_avg_item_cnt_lag_3  7.138736e-03\n",
       "39     date_subtype_item_f1_avg_item_cnt_lag_1  7.013376e-03\n",
       "27         date_cat_item_f1_avg_item_cnt_lag_1  6.581841e-03\n",
       "15                     date_avg_item_cnt_lag_1  6.076988e-03\n",
       "29         date_cat_item_f2_avg_item_cnt_lag_1  6.058210e-03\n",
       "40     date_subtype_item_f2_avg_item_cnt_lag_1  6.006550e-03\n",
       "24                date_shop_avg_item_cnt_lag_6  6.000575e-03\n",
       "8                                    type_code  5.722763e-03\n",
       "26                 date_cat_avg_item_cnt_lag_1  5.031503e-03\n",
       "38             date_subtype_avg_item_cnt_lag_1  5.016267e-03\n",
       "20               date_item_avg_item_cnt_lag_12  4.586457e-03\n",
       "25               date_shop_avg_item_cnt_lag_12  4.442203e-03\n",
       "14                       item_cnt_month_lag_12  4.053169e-03\n",
       "47                                        year  1.557792e-03\n",
       "61             date_shop_avg_item_cnt_lag_2_na  1.169527e-03\n",
       "56             date_item_avg_item_cnt_lag_2_na  8.265463e-04\n",
       "43                         item_shop_last_sale  8.019012e-04\n",
       "50                     item_cnt_month_lag_2_na  4.803873e-04\n",
       "57             date_item_avg_item_cnt_lag_3_na  3.158151e-04\n",
       "52                     item_cnt_month_lag_6_na  3.120821e-04\n",
       "7                                 item_f2_code  2.666869e-04\n",
       "64            date_shop_avg_item_cnt_lag_12_na  2.656624e-04\n",
       "51                     item_cnt_month_lag_3_na  2.564151e-04\n",
       "77  date_subtype_item_f1_avg_item_cnt_lag_1_na  2.117777e-04\n",
       "79                      delta_revenue_lag_1_na  2.115967e-04\n",
       "62             date_shop_avg_item_cnt_lag_3_na  2.061224e-04\n",
       "59            date_item_avg_item_cnt_lag_12_na  1.959963e-04\n",
       "63             date_shop_avg_item_cnt_lag_6_na  1.799856e-04\n",
       "71             date_city_avg_item_cnt_lag_1_na  1.685769e-04\n",
       "58             date_item_avg_item_cnt_lag_6_na  1.523081e-04\n",
       "53                    item_cnt_month_lag_12_na  1.497314e-04\n",
       "49                     item_cnt_month_lag_1_na  1.135935e-04\n",
       "74   date_item_shop_type_avg_item_cnt_lag_1_na  1.064609e-04\n",
       "66      date_cat_item_f1_avg_item_cnt_lag_1_na  8.449508e-05\n",
       "54                  date_avg_item_cnt_lag_1_na  3.797676e-05\n",
       "65              date_cat_avg_item_cnt_lag_1_na  3.552341e-05\n",
       "69      date_shop_type_avg_item_cnt_lag_1_x_na  3.106550e-05\n",
       "68         date_shop_cat_avg_item_cnt_lag_1_na  2.993919e-05\n",
       "44                              item_last_sale  2.655641e-05\n",
       "72      date_shop_type_avg_item_cnt_lag_1_y_na  2.483035e-05\n",
       "76          date_subtype_avg_item_cnt_lag_1_na  1.673699e-05\n",
       "60             date_shop_avg_item_cnt_lag_1_na  6.668625e-06\n",
       "78  date_subtype_item_f2_avg_item_cnt_lag_1_na  1.937219e-06\n",
       "73        date_item_city_avg_item_cnt_lag_1_na  1.852777e-06\n",
       "75             date_type_avg_item_cnt_lag_1_na  1.814543e-06\n",
       "55             date_item_avg_item_cnt_lag_1_na  1.520484e-06\n",
       "70     date_shop_subtype_avg_item_cnt_lag_1_na  1.295110e-06\n",
       "67      date_cat_item_f2_avg_item_cnt_lag_1_na  9.773624e-07"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fi[20:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "h4dJuBAIMJLP"
   },
   "outputs": [],
   "source": [
    "keep = fi[fi.imp > 0.004].cols\n",
    "pickle.dump(keep, open(PATH/'keep.pkl', 'wb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "keep = pickle.load(open(PATH/'keep.pkl', 'rb'))\n",
    "trn_x = trn_x[keep]\n",
    "val_x = val_x[keep]\n",
    "test_x = test_x[keep]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 185
    },
    "colab_type": "code",
    "id": "egifnGQqQdsZ",
    "outputId": "ea97d2da-621e-4d16-da8e-4648f19317d6"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:36: RuntimeWarning: overflow encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims, initial)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 4min 16s, sys: 13.2 s, total: 4min 29s\n",
      "Wall time: 1min 27s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:36: RuntimeWarning: overflow encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims, initial)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.5283864898099666,\n",
       " 0.37657590348293346,\n",
       " 0.5200241416189362,\n",
       " 0.8970026613695433]"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = RandomForestRegressor(n_estimators=40, n_jobs=-1, min_samples_leaf=4, max_features=0.5, oob_score=True)\n",
    "%time m.fit(trn_x, trn_y)\n",
    "show_results(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 185
    },
    "colab_type": "code",
    "id": "8Cpqj4l0Hpg3",
    "outputId": "d51c9ac9-73e5-49dc-cdda-016dcd9b0e3e"
   },
   "outputs": [],
   "source": [
    "m = RandomForestRegressor(n_estimators=40, n_jobs=-1, min_samples_leaf=3, max_features='log2', oob_score=True)\n",
    "%time m.fit(trn_x, trn_y)\n",
    "show_results(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 185
    },
    "colab_type": "code",
    "id": "DI61EPYHHpo-",
    "outputId": "da40ea3d-510b-44b6-e9fe-c3acd4a397ca"
   },
   "outputs": [],
   "source": [
    "m = RandomForestRegressor(n_estimators=40, n_jobs=-1, min_samples_leaf=3, max_features='sqrt', oob_score=True)\n",
    "%time m.fit(trn_x, trn_y)\n",
    "show_results(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 185
    },
    "colab_type": "code",
    "id": "Os0c9kuLPpoc",
    "outputId": "695c98c2-2cff-4ac3-e6ac-16e2bb038f6e"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:36: RuntimeWarning: overflow encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims, initial)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 4min 11s, sys: 13.5 s, total: 4min 24s\n",
      "Wall time: 1min 27s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:36: RuntimeWarning: overflow encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims, initial)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.5387094609466374,\n",
       " 0.3783241183414735,\n",
       " 0.5268231237779454,\n",
       " 0.8957440845089103]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = RandomForestRegressor(n_estimators=40, n_jobs=-1, min_samples_leaf=2, max_features=0.5, oob_score=True)\n",
    "%time m.fit(trn_x, trn_y)\n",
    "show_results(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 134
    },
    "colab_type": "code",
    "id": "9i27D2hNkDvj",
    "outputId": "1f5964c6-2f3c-4704-ad0d-bb046e326cd4"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:36: RuntimeWarning: overflow encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims, initial)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 12min 46s, sys: 38.7 s, total: 13min 25s\n",
      "Wall time: 4min 13s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:36: RuntimeWarning: overflow encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims, initial)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.5384021046588424,\n",
       " 0.38571421105968695,\n",
       " 0.5286384392316963,\n",
       " 0.8904041458506617]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = RandomForestRegressor(n_estimators=120, n_jobs=-1, min_samples_leaf=3, max_features=0.5, oob_score=True)\n",
    "%time m.fit(trn_x, trn_y)\n",
    "show_results(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(6115195, 0.08176354147332995)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set_rf_samples(500000)\n",
    "len(trn_x), 500000 / len(trn_x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 185
    },
    "colab_type": "code",
    "id": "Xzk1I-TK9ciP",
    "outputId": "974a3d56-1c7d-4015-a2fa-69812a27e586"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:36: RuntimeWarning: overflow encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims, initial)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 3h 18min 16s, sys: 2min 47s, total: 3h 21min 3s\n",
      "Wall time: 30min 5s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/alex/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:36: RuntimeWarning: overflow encountered in reduce\n",
      "  return umr_sum(a, axis, dtype, out, keepdims, initial)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.6248771505427018,\n",
       " 0.40001388910585356,\n",
       " 0.5843704869177022,\n",
       " 0.8799794652507853]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = RandomForestRegressor(n_estimators=400, n_jobs=-1, min_samples_leaf=3, max_features=0.5, oob_score=True)\n",
    "%time m.fit(trn_x, trn_y)\n",
    "show_results(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "zckyd_0YO--o"
   },
   "outputs": [],
   "source": [
    "yp = m.predict(test_x)\n",
    "test  = pd.read_csv(f'{PATH}/test.csv').set_index('ID')\n",
    "sub = pd.DataFrame({'ID': test.index.values, 'item_cnt_month': yp})\n",
    "sub.to_csv('submission.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "7bIQvKv8GWc_"
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [
    "p6hg0VwQPCFH",
    "GfgZ2kluHZWx",
    "hmzpggOeMR4d"
   ],
   "name": "PredictFutureSale",
   "provenance": [],
   "version": "0.3.2"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
